华为Android 8.0以上悬浮窗权限正确开启方式

您所在的位置:网站首页 华为nova4怎么打开悬浮窗权限 华为Android 8.0以上悬浮窗权限正确开启方式

华为Android 8.0以上悬浮窗权限正确开启方式

2023-12-20 00:16| 来源: 网络整理| 查看: 265

目前市面各种主流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