Android中獲取系統上安裝的APP信息
Android中獲取系統上安裝的APP信息,并且提供卸載、區別用戶應用和系統應用的小程序,供初學者參考。
public class PakageInfoProvider { private static final String tag = "GetappinfoActivity"; private Context context; private ListappInfos; 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; } }

本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!