Android中獲取系統上安裝的APP信息

openkk 12年前發布 | 58K 次閱讀 Android Android開發 移動開發

Android中獲取系統上安裝的APP信息,并且提供卸載、區別用戶應用和系統應用的小程序,供初學者參考。

public class PakageInfoProvider {
private static final String tag = "GetappinfoActivity";
private Context context;
private List appInfos;
private AppInfo appInfo;
public PakageInfoProvider(Context context) {
super();
this.context = context;
}
public List getAppInfo() {
PackageManager pm = context.getPackageManager();
List pakageinfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
appInfos = new ArrayList();
for (PackageInfo packageInfo : pakageinfos) {
appInfo = new AppInfo();
//獲取字符串方法
context.getString(R.string.app_name);
context.getResources().getString(R.string.app_name);
//獲取尺寸資源方法
context.getResources().getDimension(R.dimen.test);
//獲取xml文件并且返回的是XmlResourceParse類,其繼承與XmlPullParse
XmlResourceParser xmlrp = context.getResources().getXml(R.xml.yo);
// 獲取應用程序的名稱,不是包名,而是清單文件中的labelname
String str_name = packageInfo.applicationInfo.loadLabel(pm).toString();
appInfo.setAppName(str_name);
// 獲取應用程序的版本號碼
String version = packageInfo.versionName;
appInfo.setAppVersion(version);
// 獲取應用程序的快捷方式圖標
Drawable drawable = packageInfo.applicationInfo.loadIcon(pm);
appInfo.setDrawable(drawable);
// 獲取應用程序是否是第三方應用程序
appInfo.setIsUserApp(filterApp(packageInfo.applicationInfo));
//給一同程序設置包名
appInfo.setPackageName(packageInfo.packageName);
Logger.i(tag, "版本號:" + version + "程序名稱:" + str_name);
appInfos.add(appInfo);
appInfo = null;
}
return appInfos;
}
/**
* 三方應用程序的過濾器
* 
* @param info
* @return true 三方應用 false 系統應用
*/
public boolean filterApp(ApplicationInfo info) {
if ((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
// 代表的是系統的應用,但是被用戶升級了. 用戶應用
return true;
} else if ((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
// 代表的用戶的應用
return true;
}
return false;
}
} 
Android中獲取系統上安裝的APP信息
 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!