首页 > 软件开发 > ANDROID >

Android 如何检查悬浮窗是否显示

来源:互联网 2023-03-17 00:09:06 版权归原作者所有,如有侵权,请联系我们

在我们的日常生活中,往往会遇到Android 如何检查悬浮窗是否显示的问题,常常会不知道怎么处理,下面就让小编为大家提供一下解决这种问题的方法,希望能够给大家提供一定的帮助。bf3办公区 - 实用经验教程分享!

Android 如何检查悬浮窗是否显示bf3办公区 - 实用经验教程分享!

方法/步骤

  • 1

    首先,设置WindowManager.LayoutParams.type = TYPE_TOAST即可绕过权限,因为在view添加之前系统执行了一个检查权限的操作PhoneWindowManager.checkAddPermission()。bf3办公区 - 实用经验教程分享!

    Android 如何检查悬浮窗是否显示bf3办公区 - 实用经验教程分享!

  • 2

    然后,虽然经历了很多Android版本,但是我们关心的那部分一直没有什么大变化,就是当type == TYPE_TOAST的时候switch语句直接break了,从而跳过了接下来的权限检查。bf3办公区 - 实用经验教程分享!

    Android 如何检查悬浮窗是否显示bf3办公区 - 实用经验教程分享!

  • 2该信息未经授权抓取自百度经验
  • 3

    bf3办公区 - 实用经验教程分享!

    然后,需要注意的一点是TYPE_TOAST在最新的Android 7.1.1上已经被oogle制裁了,只允许添加一个,并且在API 25之后会直接崩溃,具体代码可以查看这里。bf3办公区 - 实用经验教程分享!

    Android 如何检查悬浮窗是否显示bf3办公区 - 实用经验教程分享!

  • 4

    然后,看一下WindowManager的diff就知道了,不过6.0以上oogle已经提供了通用方法来开启悬浮窗权限,下文会提到,推荐大家去引导用户开启,不要使用暴力的解决方式。bf3办公区 - 实用经验教程分享!

    Android 如何检查悬浮窗是否显示bf3办公区 - 实用经验教程分享!

  • 5

    bf3办公区 - 实用经验教程分享!

    然后,在PhoneWindowManager.checkAddPermission()中,系统使用了一个叫AppOpsManager的类,最终调用其中的checkOp()方法来检查权限,但是这个方法本身是隐藏的。bf3办公区 - 实用经验教程分享!

    Android 如何检查悬浮窗是否显示bf3办公区 - 实用经验教程分享!

  • 6

    最后,所以只能通过反射的方式来调用,另外还需要注意AppOpsManager是API 19才添加的,对于低于这个版本的系统并不能用此方法来检查权限。bf3办公区 - 实用经验教程分享!

    Android 如何检查悬浮窗是否显示bf3办公区 - 实用经验教程分享!

  • 注意事项

    • 上述解决方法为小编所提供,希望能够帮到大家。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!bf3办公区 - 实用经验教程分享!


    标签: Android

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号