Deseo extraer todos los nombres de actividades de un archivo apk de Android. ¿Alguna idea de cómo se puede hacer?Lectura de nombres de actividades del archivo apk en Android
Gracias Kaps
Deseo extraer todos los nombres de actividades de un archivo apk de Android. ¿Alguna idea de cómo se puede hacer?Lectura de nombres de actividades del archivo apk en Android
Gracias Kaps
Puede utilizar el método PackageManager getPackageArchiveInfo para recuperar la información de un archivo APK. Suponiendo sus vidas APK en la raíz de su tarjeta SD, puede utilizar este código:
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);
}
Hay un montón de información adicional se puede encontrar en los objetos ActivityInfo y packageinfo.
Se puede usar un decompilador como Dedexer y luego se puede echar un vistazo al manifiesto.
¿Estás seguro de que necesitas un descompilador? El manifiesto debe ser accesible y legible en la raíz del archivo apk ... – WarrenFaith
Quiero hacer esto programáticamente, ¿puedo acceder a esta herramienta desde mi código Java? – Smith
@WarrenFaith. Probablemente tengas razón. Acabo de mencionar una posible solución. @kaps veo. Si quieres hacerlo programáticamente, no puedes usar mi solución. –
Si lo que desea es hacer una lista de ellos desde la línea de comandos que puede usar
aapt dump xmltree <apk-file> AndroidManifest.xml
El formato es un poco desconcertante al principio, pero toda la información está ahí.
Necesita el Android SDK instalado para hacer esto, por supuesto.
Un gran consejo. Haga de esto una respuesta a: http://stackoverflow.com/questions/6547703/list-all-activities-within-an-apk-from-the-shell – scorpiodawg
其实 不用 得到 apk 的 路径, 直接 在 actividad 内 调用
(Traducción Inglés) Usted no tiene que usar la ruta completa a la APK, simplemente llame a los siguientes directamente desde el interior de una actividad.
PackageManager manager = getPackageManager();
PackageInfo packageInfo = manager.getPackageInfo("your package name", PackageManager.GET_UNINSTALLED_PACKAGES);
En inglés, por favor ... – JJJ
esto debería funcionar para manifestarse también: http://stackoverflow.com/questions/3868768/extracting-android-apk-and-reading-contents-of-xml-file-in-res-layout – bigstones
I quiero hacer esto programáticamente, ¿esto todavía será útil? – Smith