2

アプリケーションが起動可能かどうかを確認する最良の方法を探しています。私のコードがあります:

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() メソッドが多くの実行時間を消費することに気付いたので、起動インテントを取得せずに各アプリケーションが起動可能かどうかを確認する別の方法を探しています。

何か案が ?ありがとうございました !

4

1 に答える 1

3

私は自分の問題の解決策を見つけました。それが誰かの助けになることを願っています:

        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
            }
于 2013-03-14T16:17:31.847 に答える