2016-08-25 5 views
-1

Я разрабатываю приложение Launcher. Я заметил, что камера и галерея имеют одинаковое имя пакета, а Google+ и фотографии имеют одинаковое имя пакета. Когда я пытаюсь запустить камеру/галерею, она открывает галерею, и когда я пытаюсь запустить Photos/Google +, я открываю Google+.Камера и Галерея имеют такое же название пакета

Я использую этот код для получения списка приложений.

Intent i = new Intent(Intent.ACTION_MAIN, null); 
i.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0); 

Что касается камеры, я знаю, что я могу использовать Intent для запуска камеры, когда имя приложения камеры и имя пакета является то, что из галереи, но там может быть много приложений с одно и то же. Есть ли обобщенное решение для всех приложений?

PS: Это, как я получаю приложение информацию

for(ResolveInfo ri : availableActivities) { 
    AppItem app = new AppItem(); 
    app.setLabel(ri.loadLabel(manager)); 
    app.setName(ri.activityInfo.packageName); 
    quick_apps.add(app); 
} 

ответ

1

Хотя они имеют такое же имя пакета, но они имеют различные названия, Попробуйте начать вам активность, используйте код ниже, чтобы начать деятельность

Intent localIntent = new Intent(); 
    localIntent.setComponent(new ComponentName(
      localResolveInfo.activityInfo.packageName, 
      localResolveInfo.activityInfo.name)); 
    localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    try 
    { 
     startActivity(localIntent); 
    } catch (ActivityNotFoundException localActivityNotFoundException) 
    { 
     Toast.makeText(mContext, "Package not found!", 0).show(); 
    } 
+0

Это работает, спасибо! –

+0

рад, что это вам поможет :) – user3186605

Смежные вопросы