Как составить список всех действий, представленных приложением? - PullRequest
14 голосов
/ 18 ноября 2010

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

например:

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

спасибо заранее!

Ответы [ 4 ]

18 голосов
/ 21 сентября 2012
public ActivityInfo[] getActivityList() throws NameNotFoundException {
    PackageManager pm = this.getPackageManager();

    PackageInfo info = pm.getPackageInfo(getApplicationContext.getPackageName(), PackageManager.GET_ACTIVITIES);

    ActivityInfo[] list = info.activities;

    return list;
}
9 голосов
/ 18 ноября 2010

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

Мне кажется, я нашел решение для перечисления всех действий в приложении, хотя и не самое элегантное ...

//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);
    }
}
9 голосов
/ 18 ноября 2010

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

8 голосов
/ 19 апреля 2016

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

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...