Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android检查应用程序包是否可启动_Android_Launch - Fatal编程技术网

Android检查应用程序包是否可启动

Android检查应用程序包是否可启动,android,launch,Android,Launch,我正在寻找检查应用程序是否可启动的最佳方法。 这是我的代码: 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 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-PackageManager=context.getPackageManager();
列表包=packageManager.getInstalledPackages(0);
对于(int i=0;i
这是可行的,但当我进行应用程序评测时,我注意到packageManager.getLaunchIntentForPackage()方法会消耗大量的执行时间,因此我正在寻找另一种方法来检查每个应用程序是否可以在没有获得启动意图的情况下启动

有什么想法吗?
谢谢大家!

我为自己的问题找到了解决方案,我希望它能帮助别人:

        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
            }
PackageManager-PackageManager=context.getPackageManager();
意图maintent=新意图(Intent.ACTION\u MAIN,空);
mainIntent.addCategory(Intent.CATEGORY_启动器);
最终列表应用程序=packageManager.QueryInputActivities(
主要目的,0);
Collections.sort(应用程序、新ResolveInfo.DisplayNameComparator(
包装经理);
用于(ResolveInfo ResolveInfo:apps){
//在此处获取应用程序数据
}