2011-04-14 26 views
13

yüklüyse paket için uygulama adı, uygulama sürümü ve uygulama simgesi alabileceğim bir yöntem var mı?APK dosyası, simge, sürüm girin

+0

Verion numarasını bulamadınız mı, evet ise, cevabınızı yazabilir misiniz? –

cevap

6

(sdcard bazı apk dosyası için) Ben getPackageArchiveInfo(archiveFilePath, flags) ve getApplicationIcon (ApplicationInfo info) kullanarak apk simgesini sürümü, adı alabilirsiniz

+6

Yüklenmeyen uygulamalar için çalışmaz :(, sadece varsayılan uygulama simgesini döndürür –

+1

doğru yanıtlama http: // stackoverflow.com/a/14313280/185022 –

5
// Install a known apk file from the SD-Card 
// or launch it if installed. 
// -hsigmond 

protected void runAppFromApkFileOnSdCard() { 

     final PackageManager pm = getActivity().getPackageManager(); 
     String apkFileName  = "application_name.apk"; 
     String fullPath   = "/sdcard/"+apkFileName; 
     PackageInfo packageInfo = pm.getPackageArchiveInfo(fullPath, 0); 
     Intent intent   = pm.getLaunchIntentForPackage(packageInfo.packageName); 

     if(intent == null){ 
      File file = new File(fullPath); 
      intent  = new Intent(); 
      intent.setAction(Intent.ACTION_VIEW); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      intent.setDataAndType(Uri.fromFile(file), 
      "application/vnd.android.package-archive"); 
     } 
     startActivity(intent); 
    } 

Kullanım:

packageInfo.applicationInfo.['name','icon','logo'] etc. 

Örnek Simgesi:

Drawable icon = packageInfo.applicationInfo.loadIcon(getActivity().getPackageManager()); 
+0

Bunu denedim ama her zaman packageInfo boş. izinleri kaçırıyor muyum? Samsung Galaxy Tab 8.9, Android sürüm 3.2 için – 1HaKr

+0

benim için çalışıyorum. packageInfo henüz boş değil, uygulama henüz yüklenmemişse null null. – giacatho

13

Denedim:

ama apk dışarı bulduk edebileceğiniz gibi bu kodu

0

çalışmaz installated değilse uygulaması yüklü ise, PackageManager sadece sizin için yararlı olacaktır.

uygulama APK çıkarıcı kullanmak yüklemeden bilgi alma sorunu çözmek için, bkz: http://code.google.com/p/apk-extractor/downloads/detail?name=APK-Extractor-src-1.0.zip&can=2&q=

Bu proje Android'in ikili XML Ayrıştırma herkesin kullanabildiği ayrıştırıcı geliştirmek için bir girişim olduğunu . AAPT (Android Asset Packaging Aracı), Google'ın kendi ikili ikili XML biçimindeki XML kaynaklarını kodlar/deşifre eder. Bu, genel bir WBXML biçimi olan ve herhangi bir WBXML özellikli ayrıştırıcının ayrıştırılabileceğine inanmaktadır. Ama bu doğru değil.

Android'in İkili XML'sini keşfetmeyi planlıyorsanız, kod tabanım 'u baştan başlatabilir ve hizmetinize başlamanıza yardımcı olabilir.

Sürüm 1.0- Android manifest XML düzenleri gibi ayrıştırma ve herhangi de-derleyici tarafından açılabilir CLASS, deksmedetomidin/ODEX dönüştürme yeteneğine sahiptir.

onun blog buradadır: http://prasanta-paul.blogspot.com/2012/03/android-apk-extractor.html

53

Sadece şimdiye kadar buna çözüm arayan itiraf edeceğiz daha .. fazla saat geçirdi ve buldum! :) :)

bu referansın içine dolaşıp sonra: Ben simgesi ve adı elde etmek hile öğrendim http://code.google.com/p/android/issues/detail?id=9151 yüklenmemiş .apk dosyaları (etiket, yani).

Ben başkalarına yardımcı olmaktan çok geç değil umut:

String APKFilePath = "mnt/sdcard/myapkfile.apk"; //For example... 
PackageManager pm = getPackageManager(); 
PackageInfo pi = pm.getPackageArchiveInfo(APKFilePath, 0); 

// the secret are these two lines.... 
pi.applicationInfo.sourceDir  = APKFilePath; 
pi.applicationInfo.publicSourceDir = APKFilePath; 
// 

Drawable APKicon = pi.applicationInfo.loadIcon(pm); 
String AppName = (String)pi.applicationInfo.loadLabel(pm); 

ışık test Bundan sonra, vay ... iş gibi görünüyor.

+0

Harika, işe yarıyor! – lorenzoff

+0

Harika! Benim için çalışıyor. Teşekkür ederim. – posaidong

+0

Zorunlu Olmalıdır Pazar olarak DÜZELTİLMELİDİR Cevap: D çok yardımcı oldu :) –

İlgili konular