我需要检查已安装的应用是否具有特定的启动器活动类(基于应用的包名称)。
我可以获取活动列表并找到正确的类:
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;
}
但我似乎找不到任何方法来检查活动是否实际上是发射器。
有没有办法从清单文件中获取与活动相关的意图过滤器的信息?
答案 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)