1

应用程序可以有任意数量的可启动活动。我知道如何通过 PackageManager 获取这些活动的列表。

有没有办法确定可以通过 startActivity 启动哪些活动?

例如,Documents To Go 应用程序具有不同的活动,可以启动 Word、Excel、Powerpoint、PDF 等……我能够很好地启动所有这些活动。

但是,它还包含一些我无法使用 startActivity 启动的活动......如果我尝试这样做,我会得到一个 SecurityException。

我希望能够确定哪些活动我可以安全启动,哪些我不能,所以我只向用户展示我可以从我的应用程序中安全启动的活动列表......

这可能吗?

4

2 回答 2

1

使用您拥有的参数/数据创建意图,然后使用包管理器resolveActivity()方法检查将处理您的请求的活动。

然后使用PackageManager 的checkPermission()方法检查权限。

于 2010-06-09T05:12:29.800 回答
0

这对您来说可能是旧帽子,但您可以使用此方法:

getPackageManager().getLaunchIntentForPackage(
                packageName);

这是一种获取已安装应用程序包名称的方法:

final PackageManager pm = getPackageManager();

        List<ApplicationInfo> packages = pm
                .getInstalledApplications(PackageManager.GET_META_DATA);

        for (ApplicationInfo packageInfo : packages) {

            Log.d(TAG, "Installed package :" + packageInfo.packageName);
            Log.d(TAG,
                    "Launch Activity :"
                            + pm.getLaunchIntentForPackage(packageInfo.packageName));

        }
于 2011-03-21T15:37:58.563 回答