应用程序可以有任意数量的可启动活动。我知道如何通过PackageManager获取这些活动的列表。
有没有办法确定哪些活动可以通过startActivity启动?
例如,Documents To Go应用程序具有不同的活动,可以启动Word,Excel,Powerpoint,PDF等...我可以启动所有这些就好了。
但是,它还包含一些我无法使用startActivity启动的活动...如果我尝试这样做,我会得到一个SecurityException。
我希望能够确定哪些活动可以安全启动,哪些活动无法启动,因此我只向用户显示我可以在我的应用程序中安全启动的活动列表...
这可能吗?
答案 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));
}