2016-08-25 68 views
-1

我正在開發一個啓動器應用程序。我注意到相機和畫廊的名稱相同,Google+和Photos也具有相同的名稱。當我嘗試啓動相機/畫廊時,會打開畫廊,當我嘗試啓動照片/ Google +時,我會打開Goog​​le+。相機和圖庫具有相同的包名稱

我使用此代碼來獲取應用程序列表。

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