2012-03-09 57 views
0

我試圖找出一個更簡單(更自動化的方式)來查看當前安裝在Android設備上的所有apk版本號(包括用戶安裝和預安裝)。找出Android設備上的軟件包版本

目前我一直這樣想:

a。該版本在APK
b。 apk通常位於/ system/app
c。可以在/data/system/packages.xml中找到apk名稱的包名稱
d。棘手的部分是,應用程序名稱通常在apk文件中的字符串資源中 - 比如strings.xml(默認名稱)
e。這也可以在android SDK中使用API​​的PackageManager系列來完成

這非常耗時,並且我正在爲許多很多很多設備執行此操作。我只是在想,如何進行一些更簡單的方法。

感謝您的幫助,一如既往,非常感謝。

+0

「版本號」是指應用程序清單中的versionCode和versionName? – YuviDroid 2012-03-10 00:02:54

回答

0

我做到了,whoooo !!! .....我將此代碼發佈給需要查找設備上所有內容的軟件包名稱和版本名稱的其他人。

import java.util.List; 
import android.app.Activity; 
import android.content.pm.PackageInfo; 
import android.os.Bundle; 
import android.text.method.ScrollingMovementMethod; 
import android.util.Log; 
import android.widget.TextView; 

public class main extends Activity { 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    String bldr = new String(); 

    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0); 
    bldr = "Total packages --> " + packs.size() + "\n"; 

    for(int i=0;i<packs.size();i++){ 
     PackageInfo p = packs.get(i); 
     bldr = bldr + "<" + p.packageName + ">" + "\t" + "v" + p.versionName + "\n"; 
    } 

    TextView tv = new TextView(this); 
    tv.setMaxLines(packs.size() + 2); 
    tv.setMovementMethod(new ScrollingMovementMethod()); 
    tv.setText(bldr); 
    setContentView(tv); 
    Log.w("com.tmobile.pr.showAllPackages", bldr.toString()); 
} 
} 
0

唯一的你的方法之一是有效的:

這也可以從使用PackageManager家庭的API的

休息了Android SDK內完成......我有不知道爲什麼你認爲它甚至可以工作,更不用說可靠地做。是什麼讓你認爲人們會使用這些字符串資源,考慮到versionCode尤其是永遠不需要翻譯?

這是非常耗時

的代碼來調用PackageManager,遍歷安裝的應用程序,並檢索版本信息應採取毫秒屈指可數。