2011-05-30 100 views
6

在我的應用程序中,我想顯示特定Android手機上每個可用啓動器(用於主屏幕)的列表。是否有可能從Android操作系統獲得某種信息,以及如何進行此調用?獲取Android中每個啓動器的列表

謝謝!

親切的問候 丹尼爾

回答

1

嘗試以下操作:

  1. 獲取安裝的應用程序列表:

    列表pkgList = getPackageManager()getInstalledPackages(PackageManager.GET_ACTIVITIES);

  2. 遍歷該列表,並使用獲得發射活動:

    getPackageManager()getLaunchIntentForPackage(的packageName);

詳情請閱讀此處:PackageManager。希望這可以幫助。

+1

IIUC,'getLaunchIntentForPackage(..)'將返回您爲任何應用程序啓動Intent,而不僅僅是啓動器。例如。 「設置」和「媒體播放器」應用程序也有啓動意圖 – 2013-08-09 07:43:12

14

您可以查詢與特定意圖匹配的ResolverInfo列表。下一段代碼打印所有已安裝的啓動器。

PackageManager pm = getPackageManager(); 
Intent i = new Intent(Intent.ACTION_MAIN); 
i.addCategory(Intent.CATEGORY_HOME); 
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0); 
for (ResolveInfo resolveInfo : lst) { 
    Log.d("Test", "New Launcher Found: " + resolveInfo.activityInfo.packageName); 
} 
+1

** 1。**您應該檢查'(!lst.isEmpty())',參見[關閉。參考](http://developer.android.com/reference/android/content/pm/PackageManager.html)。 ** 2。**您的回答比@ Flavio更好,請參閱註釋 – 2013-08-14 03:44:08

+0

對於** Intent類別**,而不是硬編碼字符串,也對** Intent行爲**和'Intent.CATEGORY_HOME'使用'Intent.ACTION_MAIN'。 – electrocrat 2015-06-04 05:02:37

+1

isEmpty()檢查在這裏是無用的,對於每個 – JacksOnF1re 2015-06-18 09:43:33