国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現獲取應用程序相關信息列表的方法

2020-04-11 11:47:29
字體:
來源:轉載
供稿:網友

本文所述為Androdi獲取手機應用列表的方法,比如獲取到Android應用的軟件屬性、大小和應用程序路徑、應用名稱等,獲取所有已安裝的Android應用列表,包括那些卸載了的,但沒有清除數據的應用程序,同時在獲取到應用信息的時候,判斷是不是系統的應用程序,這是一個應用管理器所必需具備的功能。

具體實現代碼如下:

//AppInfoProvider.javapackage com.xh.ui;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.content.pm.ApplicationInfo;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.graphics.drawable.Drawable;/** * 類名稱:AppInfoProvider  * 類描述:獲取應用程序的相關信息 * 創建人:LXH  */public class AppInfoProvider { private PackageManager packageManager; //獲取一個包管理器 public AppInfoProvider(Context context){ packageManager = context.getPackageManager(); } /** *獲取系統中所有應用信息, *并將應用軟件信息保存到list列表中。 **/  public List<AppInfo> getAllApps(){ List<AppInfo> list = new ArrayList<AppInfo>(); AppInfo myAppInfo;  //獲取到所有安裝了的應用程序的信息,包括那些卸載了的,但沒有清除數據的應用程序  List<PackageInfo> packageInfos = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); for(PackageInfo info:packageInfos){  myAppInfo = new AppInfo();  //拿到包名  String packageName = info.packageName;  //拿到應用程序的信息   ApplicationInfo appInfo = info.applicationInfo;  //拿到應用程序的圖標  Drawable icon = appInfo.loadIcon(packageManager);  //拿到應用程序的大小  //long codesize = packageStats.codeSize;  //Log.i("info", "-->"+codesize);  //拿到應用程序的程序名  String appName = appInfo.loadLabel(packageManager).toString();  myAppInfo.setPackageName(packageName);  myAppInfo.setAppName(appName);  myAppInfo.setIcon(icon);    if(filterApp(appInfo)){  myAppInfo.setSystemApp(false);  }else{  myAppInfo.setSystemApp(true);  }  list.add(myAppInfo); } return list; } /** *判斷某一個應用程序是不是系統的應用程序, *如果是返回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; }}

與實例相關的Java類如下:

//AppInfo.javapackage com.xh.ui;import android.graphics.drawable.Drawable;/** * 類名稱:AppInfo  * 類描述:應用程序類,包括了程序相關屬性 * 創建人:LXH  */public class AppInfo { private Drawable icon; private String appName; private String packageName; private boolean isSystemApp; private long codesize; public long getCodesize() { return codesize; } public void setCodesize(long codesize) { this.codesize = codesize; } public Drawable getIcon() { return icon; } public void setIcon(Drawable icon) { this.icon = icon; } public String getAppName() { return appName; } public void setAppName(String appName) { this.appName = appName; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public boolean isSystemApp() { return isSystemApp; } public void setSystemApp(boolean isSystemApp) { this.isSystemApp = isSystemApp; }}

實例中配有詳盡的注釋,讀者可以在理解程序功能的基礎上根據自身項目需求加以改進和完善。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁阳县| 哈巴河县| 南投县| 偃师市| 沧源| 刚察县| 柯坪县| 白玉县| 慈溪市| 金川县| 集安市| 新化县| 玉环县| 浦北县| 洛浦县| 伊吾县| 军事| 迁安市| 来安县| 古田县| 霞浦县| 盘锦市| 高尔夫| 资溪县| 淮安市| 东城区| 临湘市| 揭东县| 吉林省| 盐池县| 哈尔滨市| 凤山市| 邢台县| 鄱阳县| 枝江市| 田东县| 龙南县| 四子王旗| 平谷区| 广水市| 繁昌县|