【发布时间】:2010-11-17 23:08:26
【问题描述】:
我认为应该可以从清单文件中描述的“第三方”应用程序获取所有活动。 我不知道怎么做。
例如:
List<Activity> aList = packManager.getActivitiesForPackage("package.name");
提前致谢!
【问题讨论】:
我认为应该可以从清单文件中描述的“第三方”应用程序获取所有活动。 我不知道怎么做。
例如:
List<Activity> aList = packManager.getActivitiesForPackage("package.name");
提前致谢!
【问题讨论】:
public ActivityInfo[] getActivityList() throws NameNotFoundException {
PackageManager pm = this.getPackageManager();
PackageInfo info = pm.getPackageInfo(getApplicationContext.getPackageName(), PackageManager.GET_ACTIVITIES);
ActivityInfo[] list = info.activities;
return list;
}
【讨论】:
您应该能够使用PackageManager 的getPackageArchiveInfo() 使用GET_ACTIVITIES 标志来做到这一点。不过我没试过
【讨论】:
感谢您的回答!
我想我也找到了列出应用程序中所有活动的解决方案,虽然不是最优雅的......
//the method gets all activities for an application
private void getAppActivities() {
PackageManager pManager = getPackageManager();
Intent startIntent = setStartIntent();
List<ResolveInfo> apps = pManager.queryIntentActivities(startIntent, 0);
int count = apps.size();
for (int i = 0; i < count; i++) {
ResolveInfo info = apps.get(i);
String packageName = info.activityInfo.packageName;
Intent intent = new Intent();
intent.setPackage(packageName);
//activities holds the activities defined in the package
List<ResolveInfo> activities = pManager.queryIntentActivities(intent, 0);
}
}
【讨论】:
如果你有应用程序上下文,那么使用这个:
private static void listAllActivities(Context context) {
PackageManager pManager = context.getPackageManager();
String packageName = context.getApplicationContext().getPackageName();
try {
ActivityInfo[] list = pManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES).activities;
for (ActivityInfo activityInfo : list) {
Log.d(TAG, "ActivityInfo = " + activityInfo.name);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
【讨论】: