在我的家庭作业中,我需要在列表中获取所有已注册到Android操作系统的活动。之后,我需要通过具有类别属性“ android.intent.category.LAUNCHER”和操作“ android.intent.action.MAIN”来过滤它们。
我阅读了这个问题(How to list all activities exposed by an application?)和有关Package Manager的信息,但是程序包管理器中的所有方法仅返回注册到应用程序包中的活动的列表。
由于找不到任何资源或方法来说明我可以进行所有活动,因此我怀疑自己无法做到这一点。有什么方法可以执行这种操作?
以下内容将为您提供软件包类别属性android.intent.category.LAUNCHER
和操作android.intent.action.MAIN
的列表。
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> pkgAppsList = getPackageManager().queryIntentActivities(mainIntent, 0);
for (int i = 0; i < pkgAppsList.size(); i++) {
Log.e("Activity package", pkgAppsList.get(i).activityInfo.name);
}