您的位置:首页 > 移动开发

判断一个APP是否为系统应用

2015-07-16 17:16 477 查看
方法一: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;
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: