我認爲應該可以從清單文件中描述的「第三方」應用程序獲取所有活動。 我無法弄清楚如何。如何列出應用程序公開的所有活動?
例如:
List<Activity> aList = packManager.getActivitiesForPackage("package.name");
在此先感謝!
我認爲應該可以從清單文件中描述的「第三方」應用程序獲取所有活動。 我無法弄清楚如何。如何列出應用程序公開的所有活動?
例如:
List<Activity> aList = packManager.getActivitiesForPackage("package.name");
在此先感謝!
您應該可以使用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 void getActivityList() throws NameNotFoundException {
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager pm = this.getPackageManager();
PackageInfo info = pm.getPackageInfo("com.packagename", PackageManager.GET_ACTIVITIES);
ApplicationInfo test = info.applicationInfo;
ActivityInfo[] list = info.activities;
}
在哪裏使用我的意圖? @easycheese – Tiger98 2016-11-17 08:15:43
如果你有應用程序上下文,然後使用該命令:
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();
}
}
這是什麼setStartIntent()? – RejoylinLokeshwaran 2017-06-22 10:58:12