Android applications state

来源:互联网 发布:三知四会四个能力 编辑:程序博客网 时间:2024/04/29 11:56
            String pkgName = getPackageName();            boolean isBuildIn = false;            boolean isSigned = false;            boolean isDownload = false;            try {                PackageInfo pkgInfo = mPm.getPackageInfo(pkgName, PackageManager.GET_SIGNATURES);                isBuildIn = (pkgInfo.applicationInfo.flags & android.content.pm.ApplicationInfo.FLAG_SYSTEM) != 0;                isDownload = (appInfo.flags & ApplicationInfo.DOWNLOADED_FLAG) != 0;                if (isBuildIn) {                    // cannot be removed, disable only                     PackageInfo sys = mPm.getPackageInfo("android", PackageManager.GET_SIGNATURES);                    Intent intent = new Intent(Intent.ACTION_MAIN);                    intent.addCategory(Intent.CATEGORY_HOME);                    intent.setPackage(pkgName);                    List<ResolveInfo> homes = mPm.queryIntentActivities(intent, 0);                    isSigned = (homes != null && homes.size() > 0)                            || (pkgInfo != null && pkgInfo.signatures != null && sys.signatures[0]                                    .equals(pkgInfo.signatures[0]));                }            } catch (NameNotFoundException e) {            }


isDownload 是指這個APK是不是下載的

isBuildIn 指的是這個APK是不是預載到image裡的

isSigned 指的是這個APK是否跟 system 使用同一個簽名檔