實際上在android中可以獲得已經安裝的應用程式的各種資訊(雖然在我的應用程式中隻需要獲得icon即可),比如:名稱,版本,包等,不僅僅隻是圖示。
首先,可以建立一個用于存放應用程式資訊的類結構。代碼如下:
class appinfo {
private int versioncode = 0;
//名稱
private string appname = "";
//包
private string packagename = "";
private string versionname = "";
//圖示
private drawable appicon = null;
}
然後可以通過getpackagemanager()函數獲得packagemanager對象,而packagemanager中提供了getinstalledpackages函數可以獲得已經安裝的應用程式包。會傳回所有已經安裝的應用程式的清單。
然後通過如下代碼取出所需要的資訊即可。
arraylist<appinfo> applist = new arraylist<appinfo>();
list<packageinfo> packages = getpackagemanager().getinstalledpackages(0);
for(int i=0;i<packages.size();i++) {
packageinfo packageinfo = packages.get(i);
appinfo tmpinfo = new appinfo();
tmpinfo.appname = packageinfo.applicationinfo.loadlabel(getpackagemanager()).tostring();
tmpinfo.packagename = packageinfo.packagename;
tmpinfo.versionname = packageinfo.versionname;
tmpinfo.versioncode = packageinfo.versioncode;
tmpinfo.appicon = packageinfo.applicationinfo.loadicon(getpackagemanager());
applist.add(tmpinfo);
需要注意:getinstalledpackages函數将會獲得所有已經安裝的應用程式,包括系統應用程式,如果要過濾系統應用程式,可以通過“packageinfo.versionname == null”來判斷。