2013-06-01 128 views
0

我的問題:
我想要使用Intent CategoryCategory.LAUNCHER獲取所有安裝的應用程序。 因此,我想獲取將在啓動器
中顯示的所有應用程序,然後解析軟件包和名稱。
package: "com.android.phone" -- name: "Phone"使用Category.LAUNCHER獲取所有已安裝的應用程序

我的代碼基本的工作原理,但我認爲,我不知道可以更容易:

final PackageManager pm = getPackageManager(); 
Intent main = new Intent(Intent.ACTION_MAIN, null); 
main.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> packages = pm.queryIntentActivities(main, 0); 

for (ResolveInfo resolve_info : packages) 
{ 
    try 
    { 
     //THIS TWO 
     String package_name = resolve_info.activityInfo.packageName; 
     String app_name = (String)pm.getApplicationLabel(pm.getApplicationInfo(package_name, PackageManager.GET_META_DATA)); 

     Log.i("TEST", "package = <" + package_name + "> name = <" + app_name + ">"); 
    } 
    catch(Exception e) 
    { 
     //package not found -- should never happen 
    } 
} 

那麼,有沒有更好的/更快,更容易方式?

+0

http://stackoverflow.com/questions/16876000/getting-all-installed-applications-with-category-launcher 我有同樣的問題! – Adwait

回答

1
final PackageManager pm = getActivity().getPackageManager(); 

final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); 
filter.addCategory(Intent.CATEGORY_LAUNCHER); 

List<IntentFilter> outFilters = new ArrayList<IntentFilter>(); 
outFilters.add(filter); 

List<ComponentName> outActivities = new ArrayList<ComponentName>(); 
pm.getPreferredActivities(outFilters, outActivities, null); 
+0

謝謝你的工作 – bricklore

相關問題