获取手机所有应用程序的信息

来源:互联网 发布:瓷砖上铺木地板 知乎 编辑:程序博客网 时间:2024/05/16 08:35

在对手机软件进行管理的时候,我们常常需要知道手机软件的一些基本信息,如应用程序的类型、位置、uid等等,才好作出相应的操作。

以下是获取手机所有安装软件的关键代码:

/** * 应用程序信息的实体类 */public class AppInfo {private Drawable icon;private String name;private String packname;private boolean inRom;private boolean userApp;private int uid;public int getUid() {return uid;}public void setUid(int uid) {this.uid = uid;}public Drawable getIcon() {return icon;}public void setIcon(Drawable icon) {this.icon = icon;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPackname() {return packname;}public void setPackname(String packname) {this.packname = packname;}public boolean isInRom() {return inRom;}public void setInRom(boolean inRom) {this.inRom = inRom;}public boolean isUserApp() {return userApp;}public void setUserApp(boolean userApp) {this.userApp = userApp;}@Overridepublic String toString() {return "AppInfo [name=" + name + ", packname=" + packname + ", inRom="+ inRom + ", userApp=" + userApp + "]";}}

/** * 业务方法,提供手机里面安装的所有的应用程序信息 */public class AppInfoProvider {/** * 获取所有的安装的应用程序信息。 * @param context 上下文 * @return */public static List<AppInfo> getAppInfos(Context context){PackageManager pm = context.getPackageManager();//所有的安装在系统上的应用程序包信息。List<PackageInfo> packInfos = pm.getInstalledPackages(0);List<AppInfo> appInfos = new ArrayList<AppInfo>();for(PackageInfo packInfo : packInfos){AppInfo appInfo = new AppInfo();//packInfo  相当于一个应用程序apk包的清单文件String packname = packInfo.packageName;Drawable icon = packInfo.applicationInfo.loadIcon(pm);String name = packInfo.applicationInfo.loadLabel(pm).toString();int flags = packInfo.applicationInfo.flags;                     //应用程序信息的标记 相当于用户提交的答卷int uid = packInfo.applicationInfo.uid;                         //操作系统分配给应用系统的一个固定的编号。一旦应用程序被装到手机 id就固定不变了。//File rcvfile = new File("/proc/uid_stat/"+uid+"/tcp_rcv");//File sndfILE = new File("/proc/uid_stat/"+uid+"/tcp_snd");appInfo.setUid(uid);if((flags&ApplicationInfo.FLAG_SYSTEM)==0){//用户程序appInfo.setUserApp(true);}else{//系统程序appInfo.setUserApp(false);}if((flags&ApplicationInfo.FLAG_EXTERNAL_STORAGE)==0){//手机的内存appInfo.setInRom(true);}else{//手机外存储设备appInfo.setInRom(false);}appInfo.setPackname(packname);appInfo.setIcon(icon);appInfo.setName(name);appInfos.add(appInfo);}return appInfos;}}



0 0
原创粉丝点击