App中所有活动的列表

时间:2011-05-21 22:00:19

标签: android android-activity

有没有办法,如何获取正在运行的应用程序中的所有活动的列表?

我试过了:

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

但它没有返回包含所有这些列表的列表。

3 个答案:

答案 0 :(得分:8)

如果应用正在投放,请使用getPackageInfo(),而不是getPackageArchiveInfo()

答案 1 :(得分:4)

@CommonsWare有正确的解决方法。我想要为解决方案添加的唯一内容(并且只是评论但你不能正确地格式化评论)是你不需要硬编码你的包名。

此解决方案应该有效:

ActivityInfo[] list = getPackageManager().getPackageInfo(getPackageName()).activities;

答案 2 :(得分:0)

此代码获取应用程序中所有Activities的列表。您可以使用相同的代码轻松获取Broadcast ReceiversServicesContent Providers。如果有任何方法可以获取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;
    }
}`