方法一:
List<ProviderInfo> candidates = pm.queryContentProviders(null, 0, 0);
ApplicationInfo info = null;
String packageName = null;
for (ProviderInfo provider : candidates){
if (provider.authority != null && provider.packageName != null){
packageName = provider.packageName;
try {
info = pm.getApplicationInfo(packageName, 0);
if (provider.authority.equals(PROVIDER_AUTHORITIES) &&
info != null && (info.flags & ApplicationInfo.FLAG_SYSTEM) == 1){
mIsYPEnabled = true;
}
} catch (PackageManager.NameNotFoundException e) {
mIsYPEnabled = false;
}
}
}
方法二:
public static boolean isSystemPermission(Context context, String permissionName) { boolean isSystem = false; final PackageManager pm = context.getPackageManager(); try { final PermissionInfo info = pm.getPermissionInfo(permissionName, 0); if (info != null) { final String pkgName = info.packageName; final PackageInfo pkgInfo = pm.getPackageInfo(pkgName, 0); if (pkgInfo != null) { final ApplicationInfo appInfo = pkgInfo.applicationInfo; if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { isSystem = true; } else { Log.w(TAG, String.format("Permission: %s is not owned by a system package.", pkgName)); } } } } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Unknown permission : " + permissionName); } return isSystem; }