美文网首页
Android获取手机内安装的应用名称,包名,应用图标等信息以及

Android获取手机内安装的应用名称,包名,应用图标等信息以及

作者: Steven_SHH | 来源:发表于2019-03-11 10:53 被阅读0次

    最近有个需求需要获取手机内所有应用的包名,应用名,应用图标,应用第一次安装时间以及最后一次更新时间。还有手机的厂商,型号以及Android系统版本号。在网上搜索了一下,自己验证了一波,在此做个记录。

    获取手机内所有应用的包名,应用名,应用图标等信息

    public class ApkTool {
        public static List<MyAppInfo> mLocalInstallApps = null;
    
        public static List<MyAppInfo> scanLocalInstallAppList(PackageManager packageManager) {
            List<MyAppInfo> myAppInfos = new ArrayList<MyAppInfo>();
            try {
                List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
                for (int i = 0; i < packageInfos.size(); i++) {
                    PackageInfo packageInfo = packageInfos.get(i);
    
                    long firstInstallTime = packageInfo.firstInstallTime;// 应用第一次安装的时间
                    int versionCode = packageInfo.versionCode;// 应用现在的版本号
                    String versionName = packageInfo.versionName;// 应用现在的版本名称
                    long lastUpdateTime = packageInfo.lastUpdateTime;// 最后一次更新时间
    
                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
                    Log.e("Steven", "firstInstallTime=" + format.format(firstInstallTime) +
                            ",versionCode=" + versionCode + ",versionName=" + versionName + ",
                            最后更新时间=" + format.format(lastUpdateTime));
    
                    //如下可获得更多信息
                    ApplicationInfo applicationInfo = packageInfo.applicationInfo;
                    String name = applicationInfo.name;// Application类名
                    String packageName = applicationInfo.packageName;// 包名
    
                    String applicationName =
                            (String) packageManager.getApplicationLabel(applicationInfo);
    
                    Log.e("Steven", "ApkTool.scanLocalInstallAppList:" + "应用名:" + applicationName + ",包名:" + packageName);
    
                    //过滤掉系统app
                    if ((ApplicationInfo.FLAG_SYSTEM & packageInfo.applicationInfo.flags) != 0) {
                        continue;
                    }
                    MyAppInfo myAppInfo = new MyAppInfo();
                    myAppInfo.setAppName(packageInfo.packageName);
                    if (packageInfo.applicationInfo.loadIcon(packageManager) == null) {
                        continue;
                    }
                    myAppInfo.setImage(packageInfo.applicationInfo.loadIcon(packageManager));
                    myAppInfos.add(myAppInfo);
    
    
                }
            } catch (Exception e) {
                Log.e("Steven", "===============获取应用包信息失败");
            }
            return myAppInfos;
        }
    
    }
    
    

    扫描方法需要放在子线程中执行。

    new Thread(){
                @Override
                public void run() {
                    super.run();
                    // 扫描得到APP列表
                    final List<MyAppInfo> appInfos = ApkTool.scanLocalInstallAppList(MainActivity.this.getPackageManager());
                
                    new Handler(Looper.getMainLooper()).post(new Runnable() {
                        @Override
                        public void run() {
                              // 如果需要更新UI 回到主线程中进行处理
                        }
                    });
                }
            }.start();
    

    获取手机的厂商、型号、Android系统版本号、IMEI(6.0系统以上需要手动获取权限)、当前系统语言

    public class SystemUtil {
    
        /**
         * 获取当前手机系统语言。
         *
         * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN”
         */
        public static String getSystemLanguage() {
            return Locale.getDefault().getLanguage();
        }
    
        /**
         * 获取当前系统上的语言列表(Locale列表)
         *
         * @return 语言列表
         */
        public static Locale[] getSystemLanguageList() {
            return Locale.getAvailableLocales();
        }
    
        /**
         * 获取当前手机系统版本号
         *
         * @return 系统版本号
         */
        public static String getSystemVersion() {
            return android.os.Build.VERSION.RELEASE;
        }
    
        /**
         * 获取手机型号
         *
         * @return 手机型号
         */
        public static String getSystemModel() {
            return android.os.Build.MODEL;
        }
    
        /**
         * 获取手机厂商
         *
         * @return 手机厂商
         */
        public static String getDeviceBrand() {
            return android.os.Build.BRAND;
        }
    
        /**
         * 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限)
         *
         * @return 手机IMEI
         */
        public static String getIMEI(Context ctx) {
            TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE);
            if (tm != null) {
                return tm.getDeviceId();
            }
            return null;
        }
    }
    

    相关文章

      网友评论

          本文标题:Android获取手机内安装的应用名称,包名,应用图标等信息以及

          本文链接:https://www.haomeiwen.com/subject/cddvpqtx.html