Чтение названий активности из файла apk в Android

Я хочу извлечь все имена действий из файла apk android. Любая идея, как это возможно?

Thanx Kaps

Вы можете использовать метод 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.

Если вы просто хотите перечислить их из командной строки, вы можете использовать

 aapt dump xmltree <apk-file> AndroidManifest.xml 

Сначала формат немного озадачен, но вся информация есть.

Конечно, для этого вам нужен Android SDK.

Вы можете использовать декомпилятор вроде Dedexer, а затем можете взглянуть на манифест.

其实 不用 得到 APK 的 路径, 直接 在 активность 内 调用

(Перевод на английский язык) Вам не нужно использовать полный путь к APK, просто вызовите следующее непосредственно изнутри Activity.

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