2011-04-20 11 views
9

Chcę wyodrębnić wszystkie nazwy działań z pliku apk Androida. Każdy pomysł, jak to możliwe?Czytanie nazw aktywności z pliku apk w Androidzie

Niż Kaps

+0

to powinno działać na zbyt oczywistego: http://stackoverflow.com/questions/3868768/extracting-android-apk-and-reading-contents-of-xml-file-in-res-layout – bigstones

+0

I chcesz zrobić to programowo, czy będzie to nadal przydatne? – Smith

Odpowiedz

10

Aby pobrać informacje z pliku APK, można użyć metody PackageManager getPackageArchiveInfo. Zakładając swoje życie APK w katalogu głównym karty SD, można użyć tego kodu:

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); 
    } 

Jest mnóstwo dodatkowych informacji można znaleźć w obiektach ActivityInfo i PackageInfo.

0

Można użyć decompiler jak Dedexer a następnie można spojrzeć na manifeście.

+1

Czy jesteś pewien, że potrzebujesz dekompilatora? Manifest powinien być dostępny i czytelny w katalogu głównym pliku APK ... – WarrenFaith

+0

Chcę zrobić to programowo, czy mogę uzyskać dostęp do tego narzędzia z mojego kodu Java? – Smith

+0

@WarrenFaith. Prawdopodobnie masz rację, właśnie wspomniałem o jednym możliwym rozwiązaniu. @kaps Widzę. Jeśli chcesz zrobić to programowo, nie możesz użyć mojego rozwiązania. –

20

Jeśli chcesz po prostu wymienić je z wiersza poleceń można użyć

aapt dump xmltree <apk-file> AndroidManifest.xml 

Format jest nieco kłopotliwy w pierwszym, ale wszystkie informacje są tam.

Potrzebny jest oczywiście zainstalowany zestaw SDK systemu Android.

+0

Świetna rada. Proszę o odpowiedź na: http://stackoverflow.com/questions/6547703/list-all-activities-within-an-apk-from-the-shell – scorpiodawg

0

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

(angielskie) Nie trzeba korzystać z pełnej ścieżki do pliku APK, zadzwoń następujących bezpośrednio od wewnątrz działaniem.

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

Po angielsku, proszę ... – JJJ