/**
* 检查是否获得悬浮窗权限
* @param context
* @param op
* @return
*/
//OP_SYSTEM_ALERT_WINDOW=24 op = 24
private boolean checkOp(Context context, int op) {
final int version = Build.VERSION.SDK_INT;
if (version >= 19) {
AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
try {
Class<?> spClazz = Class.forName(manager.getClass().getName());
Method method = manager.getClass().getDeclaredMethod("checkOp", int.class, int.class, String.class);
int property = (Integer) method.invoke(manager, op,
Binder.getCallingUid(), context.getPackageName());
if (AppOpsManager.MODE_ALLOWED == property) {
return true;
} else {
return false;
}
} catch (Exception e) {
}
} else {
}
return true;
}
/**
* 跳转到miui的权限管理页面
*/
private void gotoMiuiPermission() {
Intent i = new Intent("miui.intent.action.APP_PERM_EDITOR");
ComponentName componentName = new ComponentName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
i.setComponent(componentName);
i.putExtra("extra_pkgname", getActivity().getPackageName());
try {
startActivityForResult(i, PERMISSION_REQUEST_CODE);
} catch (Exception e) {
e.printStackTrace();
gotoMeizuPermission();
}
}
/**
* 跳转到魅族的权限管理系统
*/
private void gotoMeizuPermission() {
Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.putExtra("packageName", getActivity().getPackageName());
try {
startActivityForResult(intent, PERMISSION_REQUEST_CODE);
} catch (Exception e) {
e.printStackTrace();
gotoHuaweiPermission();
}
}
/**
* 华为的权限管理页面
*/
private void gotoHuaweiPermission() {
try {
Intent intent = new Intent(getActivity().getPackageName());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName comp = new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.addviewmonitor.AddViewMonitorActivity");
intent.setComponent(comp);
startActivityForResult(intent, PERMISSION_REQUEST_CODE);
} catch (Exception e) {
e.printStackTrace();
startActivityForResult(getAppDetailSettingIntent(), PERMISSION_REQUEST_CODE);
}
}
/**
* 获取应用详情页面intent
*
* @return
*/
private Intent getAppDetailSettingIntent() {
Intent localIntent = new Intent();
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= 9) {
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
localIntent.setData(Uri.fromParts("package", getActivity().getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
localIntent.setAction(Intent.ACTION_VIEW);
localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
localIntent.putExtra("com.android.settings.ApplicationPkgName", getActivity().getPackageName());
}
return localIntent;
}