在Android中从apk文件中读取活动名称

时间:2011-04-20 10:33:00

标签: java android android-emulator apk

我想从android apk文件中提取所有活动名称。 知道怎么可能这样做?

感谢名单 KAPS

4 个答案:

答案 0 :(得分:20)

如果您只想从命令行列出它们,可以使用

aapt dump xmltree <apk-file> AndroidManifest.xml

首先格式有点令人困惑,但所有信息都在那里。

当然,您需要安装Android SDK才能执行此操作。

答案 1 :(得分:10)

您可以使用PackageManager方法getPackageArchiveInfo从APK文件中检索信息。假设您的APK位于SD卡的根目录中,您可以使用以下代码:

    String apkPath = Environment.getExternalStorageDirectory().getAbsolutePath() 
                   + "/MyApp.apk";
    PackageManager pm = getPackageManager();

    PackageInfo info = pm.getPackageArchiveInfo(apkPath, 
                           PackageManager.GET_ACTIVITIES);
    //Log.i("ActivityInfo", "Package name is " + info.packageName);

    for (android.content.pm.ActivityInfo a : info.activities) {
        Log.i("ActivityInfo", a.name);
    }

您可以在ActivityInfo和PackageInfo对象中找到大量其他信息。

答案 2 :(得分:0)

您可以使用像Dedexer这样的反编译器,然后您可以查看清单。

答案 3 :(得分:0)

其实不用得到APK的路径,直接在活性内调用

(英文翻译)您不必使用APK的完整路径,只需直接从活动内部调用以下内容。

PackageManager manager = getPackageManager();
PackageInfo packageInfo = manager.getPackageInfo("your package name", PackageManager.GET_UNINSTALLED_PACKAGES);