有没有办法,如何获取正在运行的应用程序中的所有活动的列表?
我试过了:
ActivityInfo[] list = getPackageManager().getPackageArchiveInfo(
"/sd-ext/app/cz.eman.smartstore.android-1.apk",
PackageManager.GET_ACTIVITIES).activities;
但它没有返回包含所有这些列表的列表。
答案 0 :(得分:8)
如果应用正在投放,请使用getPackageInfo()
,而不是getPackageArchiveInfo()
。
答案 1 :(得分:4)
@CommonsWare有正确的解决方法。我想要为解决方案添加的唯一内容(并且只是评论但你不能正确地格式化评论)是你不需要硬编码你的包名。
此解决方案应该有效:
ActivityInfo[] list = getPackageManager().getPackageInfo(getPackageName()).activities;
答案 2 :(得分:0)
此代码获取应用程序中所有Activities
的列表。您可以使用相同的代码轻松获取Broadcast Receivers
,Services
和Content Providers
。如果有任何方法可以获取Intent-filters
,请告诉我。
public String getAllActivities(Context context) {
try {
String Activities = "";
PackageInfo pi = context.getPackageManager().getPackageInfo(
context.getPackageName(), PackageManager.GET_ACTIVITIES);
if(pi.activities!=null)
{
ActivityInfo[] Activities_array = pi.activities;
for (int i = 0; i < Activities_array.length; i++) {
int j=i+1;
Activities = Activities + j + ") "+ pi.activities[i].name+ ", \n";
}
}
if(Activities.equals(null))
return "-";
else
return Activities;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return null;
}
}`