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


Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003259

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

public class PakageInfoProvider {

private static final String tag = "GetappinfoActivity";

private Context context;

private List<AppInfo> appInfos;

private AppInfo appInfo;

 

public PakageInfoProvider(Context context) {

super();

this.context = context;

}

 

public List<AppInfo> getAppInfo() {

PackageManager pm = context.getPackageManager();

List<PackageInfo> pakageinfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

appInfos = new ArrayList<AppInfo>();

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;

}

 

}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM