2011-04-20 15 views
9

Bir android apk dosyasındaki tüm aktivite isimlerini çıkarmak istiyorum. Ne kadar bir olasılıkla yapılabilir?Android dosyasındaki Aktivite isimleri okunurken Android dosyasında

Thanx Kaps

+0

bu tezahür çok için çalışması gerekir: http://stackoverflow.com/questions/3868768/extracting-android-apk-and-reading-contents-of-xml-file-in-res-layout – bigstones

+0

I Bu programlı yapmak ister, bu hala yararlı olacak mı? – Smith

cevap

10

Bilgileri bir APK dosyasından almak için PackageManager yöntemini getPackageArchiveInfo kullanabilirsiniz. SD kartınızın kök APK hayatını varsayarsak, bu kodu kullanabilirsiniz:

Eğer ActivityInfo ve PackageInfo nesneleri bulabileceğiniz ek bilgi bol olan
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); 
    } 

. Sadece komut satırından bunları listelemek istiyorsanız

0

Sen Dedexer gibi bir decompiler kullanabilir ve ardından manifest'ten bir göz alabilir.

+1

Bir decompiler'a ihtiyaç duyduğunuzdan emin misiniz? Bildiri, apk dosyasının kökünden erişilebilir ve okunabilir olmalıdır ... – WarrenFaith

+0

Bu programlı olarak yapmak istiyorum, bu araca Java kodumdan erişebilir miyim? – Smith

+0

@WarrenFaith. Muhtemelen haklısın, sadece bir çözümden bahsetmiştim. Gördüğüm kaplar. Eğer program yapmak istiyorsan, çözümümü kullanamazsın. –

20

Eğer formatı ilk başta biraz şaşırtıcı olduğunu

aapt dump xmltree <apk-file> AndroidManifest.xml 

kullanabilirsiniz, ancak tüm bilgi yoktur.

Tabi ki bunu yapmak için Android SDK'ya ihtiyacınız var.

+0

Harika bir ipucu. Lütfen şu cevabı verin: http://stackoverflow.com/questions/6547703/list-all-activities-within-an-apk-from-the-shell – scorpiodawg

0

其实 不用 得到 apk 的 路径, 直接 在 etkinlik 内 调用

(İngilizce çeviri) Sadece arayın, APK tam yolunu kullanmak zorunda olmadığımız bir Activity içinden doğrudan aşağıdaki.

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

İngilizce, lütfen ... – JJJ