确定是否可以启动应用程序中的特定活动

时间:2010-06-09 01:50:30

标签: android android-activity launch securityexception

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

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

例如,Documents To Go应用程序具有不同的活动,可以启动Word,Excel,Powerpoint,PDF等...我可以启动所有这些就好了。

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

我希望能够确定哪些活动可以安全启动,哪些活动无法启动,因此我只向用户显示我可以在我的应用程序中安全启动的活动列表...

这可能吗?

2 个答案:

答案 0 :(得分:1)

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

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

HTH!

答案 1 :(得分: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));

        }