android6.0悬浮窗权限问题(eg:魅族)
2017-06-06 15:44
218 查看
// 判断悬浮窗权限是否存在
public static boolean getAppOps(Context context) {
try {
Object object = context.getSystemService("appops");
if (object == null) {
return false;
}
Class localClass = object.getClass();
Class[] arrayOfClass = new Class[3];
arrayOfClass[0] = Integer.TYPE;
arrayOfClass[1] = Integer.TYPE;
arrayOfClass[2] = String.class;
Method method = localClass.getMethod("checkOp", arrayOfClass);
if (method == null) {
return false;
}
Object[] arrayOfObject1 = new Object[3];
arrayOfObject1[0] = Integer.valueOf(24);
arrayOfObject1[1] = Integer.valueOf(Binder.getCallingUid());
arrayOfObject1[2] = context.getPackageName();
int m = ((Integer) method.invoke(object, arrayOfObject1)).intValue();
return m == AppOpsManager.MODE_ALLOWED;
} catch (Exception ex) {
}
return false;
}
//跳转到设置界面
Toast.makeText(NEVideoPlayerActivity.this, "请开启悬浮窗权限", 0).show();
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= 9) {
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.fromParts("package", getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
intent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
}
startActivity(intent);
public static boolean getAppOps(Context context) {
try {
Object object = context.getSystemService("appops");
if (object == null) {
return false;
}
Class localClass = object.getClass();
Class[] arrayOfClass = new Class[3];
arrayOfClass[0] = Integer.TYPE;
arrayOfClass[1] = Integer.TYPE;
arrayOfClass[2] = String.class;
Method method = localClass.getMethod("checkOp", arrayOfClass);
if (method == null) {
return false;
}
Object[] arrayOfObject1 = new Object[3];
arrayOfObject1[0] = Integer.valueOf(24);
arrayOfObject1[1] = Integer.valueOf(Binder.getCallingUid());
arrayOfObject1[2] = context.getPackageName();
int m = ((Integer) method.invoke(object, arrayOfObject1)).intValue();
return m == AppOpsManager.MODE_ALLOWED;
} catch (Exception ex) {
}
return false;
}
//跳转到设置界面
Toast.makeText(NEVideoPlayerActivity.this, "请开启悬浮窗权限", 0).show();
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= 9) {
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.fromParts("package", getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
intent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
}
startActivity(intent);
相关文章推荐
- Android6.0系统悬浮窗权限的问题解决方法
- Android 悬浮窗权限问题解决
- 关于Android6.0系统某些时候无法获取到相关权限的问题
- Android6.0以上权限获取权限的问题
- 相机拍照功能之权限和Android6.0版本问题
- 打电话Demo及Android6.0的运行时权限问题
- 关于MIUI悬浮窗权限问题的解决方案
- Android6.0的拍照权限处理在Android6.0的手机时data为null的问题。
- Android6.0权限问题
- Android6.0权限问题
- android6.0手机权限问题
- 关于android6.0动态权限造成的app crash问题
- Android6.0权限问题,并撰写常用权限工具类
- Android6.0-蓝牙权限问题
- Android——关于android6.0的权限问题
- Android6.0极其以上系统获取Dangerous系统权限问题及其解决方案
- Android6.0(Android M) 悬浮窗被禁用,无权限开启悬浮窗的解决方案
- Android6.0权限问题,并撰写常用权限工具类
- android6.0以上动态申请权限问题。
- android6.0权限问题