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

我想从android apk文件中提取所有的活动名称。 任何想法如何可能做到?

Thanx Kaps

Solutions Collecting From Web of "在Android中从apk文件读取活动名称"

您可以使用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对象中可以find很多附加信息。

如果你只是想从命令行列出你可以使用

 aapt dump xmltree <apk-file> AndroidManifest.xml 

起初格式有点令人困惑,但所有的信息都在那里。

当然,你需要安装Android SDK才能做到这一点。

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

其实不用得到的apk的path,直接在活动内调用

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

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