Android6.0 申请SYSTEM_ALERT_WINDOW权限 没有弹出权限框
2016-08-24 10:20
531 查看
问题:在Android6.0申请SYSTEM_ALERT_WINDOW权限,没有弹授权框?
解决:在android6.0应用开发时,动态申请权限时。按照官方文档无法申请到SYSTEM_ALERT_WINDOW权限,爬stackoverflow找到解决方案。
这个好像是一个bug,可以使用层叠权限解决【Settings.ACTION_MANAGE_OVERLAY_PERMISSION】。
解释博客
直接上代码:
解决:在android6.0应用开发时,动态申请权限时。按照官方文档无法申请到SYSTEM_ALERT_WINDOW权限,爬stackoverflow找到解决方案。
这个好像是一个bug,可以使用层叠权限解决【Settings.ACTION_MANAGE_OVERLAY_PERMISSION】。
解释博客
直接上代码:
private void checkPermissions(){ Log.d("MainActivity->","SDK_INT->"+Build.VERSION.SDK_INT); if(Build.VERSION.SDK_INT< 23){ return ; } /* 检查是否有悬浮窗的权限 */ if (!Settings.canDrawOverlays(this)) { isHasAlertPermission = false; Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); startActivityForResult(intent, 101); } /* 无效的方法,可以申请读取联系人的权限 */ int hasPermission = checkSelfPermission(Manifest.permission.READ_CONTACTS); if(PackageManager.PERMISSION_GRANTED !=hasPermission){ Log.d("MainActivity->","get permissions"+Build.VERSION.SDK_INT); requestPermissions(new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW},100); } }
/* *申请联系人等权限回调 */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 100: if(PackageManager.PERMISSION_GRANTED == grantResults[0]){ isHasAlertPermission = true; }else { Toast.makeText(MainActivity.this,"没有获取权限",Toast.LENGTH_LONG).show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } /** 跳转到设置可以悬浮的权限 **/ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){ case 101: if(Build.VERSION.SDK_INT >22){ if (!Settings.canDrawOverlays(this)){ isHasAlertPermission = false; } else { isHasAlertPermission =true; } } break; default: super.onActivityResult(requestCode, resultCode, data); } }
相关文章推荐
- Android 全局弹出对话框SYSTEM_ALERT_WINDOW权限
- Android 在Service中弹出窗口及SYSTEM_ALERT_WINDOW权限解决方法
- Android O 特殊权限SYSTEM_ALERT_WINDOW申请,“permission denied for window type”报错处理
- android M SYSTEM_ALERT_WINDOW权限问题
- 帧动画的大小设置与悬浮窗权限system_alert_window 6.0后需要单独处理
- Android6.0 创建TYPE_SYSTEM_ALERT级别的弹出框方法
- Android悬浮窗权限“android.permission.SYSTEM_ALERT_WINDOW”判断是否开启问题
- Android6.0 创建TYPE_SYSTEM_ALERT级别的弹出框方法
- android 特殊权限SYSTEM_ALERT_WINDOW,WRITE_SETTINGS
- Andrid6.0申请SYSTEM_ALERT_WINDOW和WRITE_SETTINGS权限
- 随笔:关于权限android.permission.SYSTEM_ALERT_WINDOW
- Android6.0 创建TYPE_SYSTEM_ALERT级别的弹出框方法
- 转载 Android6.0动态权限申请步骤以及需要注意的一些坑
- Android6.0以后 申请敏感权限两次的解决方法
- Android6.0哪些权限要动态申请?
- Android6.0权限申请
- Android6.0动态申请权限那些坑--以及避免用户选择不再提示后无法获取权限的问题
- Android6.0权限申请框架的permissionsdispatcher的基本使用
- Android6.0 蓝牙搜索不到设备原因,MIUI权限申请机制
- 解决ubuntu14.04下samba共享目录share点开弹出没有权限访问的问题