我想从android apk文件中提取所有活动名称。 知道怎么可能这样做?
感谢名单 KAPS
答案 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);