Android 获取手机中所有安装的程序

获取手机中所有安装的程序:

  • PackageManger
    包管理者封装了当前应用程序的所有信息,可以通过包管理者拿到当前应用程序的所有信息。
  • PackageInfo
    该类封装了应用程序清单文件中的所有信息。可以通过这个类拿到当前应用程序的版本
/**
 * 返回应用程序的信息
 */
public static List<AppInfo> getAppinfos(Context context){
    PackageManager pm = context.getPackageManager();
    //如果后面想通过PackageInfo拿到每个程序的权限信息,那么这里getInstalledPackages的参数就必须是
    //PackageManager.GET_PERMISSIONS,不然后面通过PackageInfo就无法得到应用程序清单中申请的权限
    List<PackageInfo>  packinfos = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS );
    List<AppInfo> appinfos = new ArrayList<AppInfo>();
    for(PackageInfo info : packinfos){
        AppInfo appInfo = new AppInfo();
        appInfo.setPackname(info.packageName);
        appInfo.setVersion(info.versionName);
        appInfo.setAppName(info.applicationInfo.loadLabel(pm).toString());
        appInfo.setAppIcon(info.applicationInfo.loadIcon(pm));
        if((info.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE)==0){//通过这个来判断安装到了手机还是SD卡
            appInfo.setInRom(true);
        }else{
            appInfo.setInRom(false);
        }
        //判断程序是不是系统程序
        if(filterApp(info.applicationInfo)){
            appInfo.setUserApp(true);
        }else{
            appInfo.setUserApp(false);
        }
        //获取到某个应用程序的全部权限信息.
        String[] permissions = info.requestedPermissions;
        if(permissions!=null && permissions.length>0){
            for(String p: permissions){
                if("android.permission.INTERNET".equals(p)){
                    appInfo.setUseNetwork(true);
                }else if("android.permission.ACCESS_FINE_LOCATION".equals(p)){
                    appInfo.setUseGPS(true);
                }else if("android.permission.READ_CONTACTS".equals(p)){
                    appInfo.setUseContact(true);
                }
            }
        }
        appinfos.add(appInfo);
        appInfo = null;
    }
    return appinfos;
}
/**
 * 该方法提供了用于判断一个程序是系统程序还是用户程序的功能。
 * @param info
 * @return true 用户自己安装的软件
 *         fasle  系统软件.
 */
public  static 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;
}

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程