2013-03-14 60 views
0

我正在尋找檢查應用程序是否可啓動的最佳方法。 有我的代碼:Android檢查應用程序包是否可啓動

PackageManager packageManager = context.getPackageManager(); 
List<PackageInfo> packs = packageManager.getInstalledPackages(0); 
for (int i = 0; i < packs.size(); i++) { 
    PackageInfo p = packs.get(i); 
    if (packageManager.getLaunchIntentForPackage(p.applicationInfo.packageName) != null) { 
     // Get application info 
    } 
} 

這個工作,但是當我做應用分析我注意到,packageManager.getLaunchIntentForPackage()方法會消耗大量的執行時間,所以我在尋找一種替代的方法來檢查,如果每個應用程序都可以啓動而不會獲得啓動意圖。

有什麼想法? 謝謝!

回答

1

我找到了解決方案,我自己的問題,我希望這會幫助別人:

 PackageManager packageManager = context.getPackageManager(); 

      Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
      mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
      final List<ResolveInfo> apps = packageManager.queryIntentActivities(
        mainIntent, 0); 
      Collections.sort(apps, new ResolveInfo.DisplayNameComparator(
        packageManager)); 

      for (ResolveInfo resolveInfo : apps) { 
      // Get application data here 
      } 
相關問題