6

Is there any way, how to get list of all activities in running app?

I have tried:

ActivityInfo[] list = getPackageManager().getPackageArchiveInfo(
                    "/sd-ext/app/cz.eman.smartstore.android-1.apk",
                    PackageManager.GET_ACTIVITIES).activities;

but it doesn´t return a list with all of them.

sealskej
  • 7,281
  • 12
  • 53
  • 64

3 Answers3

8

If the app is running, then use getPackageInfo(), instead of getPackageArchiveInfo().

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491
4

@CommonsWare had the proper fix. The only thing I want to add for the solution (and would have just commented but you can't format comments properly) is that you don't need to hardcode your package name.

This solution should work:

ActivityInfo[] list = getPackageManager().getPackageInfo(getPackageName()).activities;
ajacian81
  • 7,419
  • 9
  • 51
  • 64
0

This code gets list of all the Activities in the application. you can use the same code to get Broadcast Receivers, Services and Content Providers with little editing. Please let me know if there is any way to get the 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;
    }
}`
Humming Bird
  • 121
  • 1
  • 9