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

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

Thanx Kaps

  • 使用在source / build / target / product / security /
  • 无法find'apksigner'可执行文件来手动签名APK
  • 将Google Play中的Android应用转换为Samsung Store
  • 上传Android应用程序谷歌一步一步播放...?
  • 转换为Dalvik格式失败,错误1 - 导出APK
  • Android开发者“上传新的APK到生产99%完成”并卡住了
  • Android studio 3.0不会生成已签名的apk
  • Android中的AAR,JAR,DEX,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);