从ActivityInfo / PackageManager检查Activity是否为Launcher

时间:2014-08-09 15:36:34

标签: android android-package-managers

我需要检查已安装的应用是否具有特定的启动器活动类(基于应用的包名称)。

我可以获取活动列表并找到正确的类:

PackageInfo info = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);

for (ActivityInfo a : info.activities) {
    if (a.name.compareTo("specific class name") == 0)

        // if a is launcher activity
            return true;
    }

但我似乎找不到任何方法来检查活动是否实际上是发射器。

有没有办法从清单文件中获取与活动相关的意图过滤器的信息?

2 个答案:

答案 0 :(得分:2)

从以下所有应用中获取启动器活动列表

        final PackageManager pm = getPackageManager();
        // package manager is provider of all the application information
        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

        List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);

        for (ResolveInfo info : appList) {

            Log.d("package and activity name = "
                    + info.activityInfo.packageName + "    "
                    + info.activityInfo.name);


        }

答案 1 :(得分:0)

您可以使用以下方法检查应用程序是否具有启动器活动:

(context.packageManager.getLaunchIntentForPackage(app_package_name) != null)