华为Android 8.0以上悬浮窗权限正确开启方式 |
您所在的位置:网站首页 › 华为nova4怎么打开悬浮窗权限 › 华为Android 8.0以上悬浮窗权限正确开启方式 |
目前市面各种主流Android手机的悬浮窗权限总结代码
不想看继续看的,直接copy代码,拿走吧! 下面简单说一下,我在开发中遇到一个关于华为8.0手机悬浮窗的奇葩问题; 开发中在android 8.0上遇到了一个判断悬浮窗权限是否开启的问题,当在一个界面弹出dialog提示用户开启悬浮窗权限,用户点击之后,跳转到设置界面开启悬浮窗权限,然后返回该页面,Settings.canDrawOverlays(context) 进行权限开启的判断,结果返回的是false;程序接收到的是权限没有开启,但是到设置里面查看确实是开启了的。而且当你对界面有刷新操作之后(去到其他界面、退出重新进入、点击按钮等等),检测到权限也是开启的。但是当你从界面跳转到设置并开启权限,然后返回界面直接调用Settings.canDrawOverlays(context)方法判断显示的是未开启。 搞得我很头晕,网上找了一堆资料,都没有效果,最后无意间注释了一行代码, // intent.setData(Uri.parse("package:" + getPackageName()));结果一切都恢复正常了,我艹了,8.0以上的手机就是坑呀!再次记录一下,希望对遇到我这样问题的人有帮助; 完整的代码如下: private void requestSettingCanDrawOverlays() { Toast.makeText(SplashActivity.this, "请打开显示悬浮窗开关!", Toast.LENGTH_LONG).show(); int sdkInt = Build.VERSION.SDK_INT; if (sdkInt >= Build.VERSION_CODES.O) {//8.0以上 Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); startActivityForResult(intent, REQUEST_DIALOG_PERMISSION); } else if (sdkInt >= Build.VERSION_CODES.M) {//6.0-8.0 Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); intent.setData(Uri.parse("package:" + getPackageName())); startActivityForResult(intent, REQUEST_DIALOG_PERMISSION); } else {//4.4-6.0一下 //无需处理了 } } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |