Как перечислить все действия, открытые приложением?

Я думаю, что должно быть возможно получить все действия от стороннего приложения, описанного в файле манифеста. Я не могу понять, как.

например:

List<Activity> aList = packManager.getActivitiesForPackage("package.name");

заблаговременно!

Ответ 1

Вы должны сделать это, используя PackageManager getPackageArchiveInfo() с помощью флага GET_ACTIVITIES. Я не устал от этого.

Ответ 2

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;

}

Ответ 3

Спасибо за ответ!

Я думаю, что нашел решение для перечисления всех видов деятельности в приложении, а не из самых элегантных, хотя...

//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);
    }
}

Ответ 4

Если у вас есть контекст приложения, используйте это:

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();
    }
}