123排行榜,探索世界,了解各类奇异学识!
123排行榜 > 综合 > 正文

终极指南:如何优雅地解决小米手机后台弹窗权限问题

时间:2024-02-21

想必许多小米手机用户都曾为后台弹窗权限问题而苦恼。但其实,解决这一问题并不复杂。本文将介绍一种优雅的方法,让您轻松摆脱小米手机后台弹窗权限的困扰。通过简单的操作,您可...

TIPS:本文共有 2387 个字,阅读大概需要 5 分钟。

想必许多小米手机用户都曾为后台弹窗权限问题而苦恼。但其实,解决这一问题并不复杂。本文将介绍一种优雅的方法,让您轻松摆脱小米手机后台弹窗权限的困扰。通过简单的操作,您可以有效地管理应用程序的后台弹窗权限,保障手机使用时的流畅体验。无需担心繁琐的设置,也无需借助第三方工具,本方法将为您带来便捷、高效的解决方案。让我们一起来探究如何优雅地解决小米手机后台弹窗权限问题吧!

/ 今日科技快讯 /

7月23日,据外媒报道,微软宣布将向总部位于美国旧金山的人工智能研究公司OpenAI投资10亿美元,为其云计算平台开发AI技术。

/ 作者简介 /

本篇文章转载自nodzhang的博客,分享了他对于小米手机后台弹出界面权限的适配方案,相信会对大家有所帮助!

原文地址:

https://juejin.im/post/5d328ce3e51d454fbf540aad

/ 前言 /

在一个风和日丽的下午,突然收到测试同学反馈在小米手机中有些页面无法正常启动的消息,我便立刻去排查代码,发现都是常规启动Activity的操作,却真的无法实现了,这让人感觉十分诡异。而这一现象只在小米手机中发生,所以断定肯定和小米手机的MIUI系统有关系,经过排查发现是小米手机中“后台弹出界面”的权限默认被拒绝了,这样在后台Service中或者其他一些后台操作都无法启动Activity了。

/ 分析一波 /

在小米手机的应用权限管理中有一个“后台弹出界面权限”,该项权限会限制当APP处在后台时弹出Activity的动作,该权限时默认关闭的,可以在小米系统的权限管理页看到:

这个时候正常的startActivity()方法无法弹出Activity,在Log中筛选MIUILOG查看系统日志:

我们可以看到其中有权限拒绝的具体说明:

可以看到是权限原因拒绝了启动Activity动作,随后我们在小米的官方论坛中也看到了他们的声明:

/ 解决方案 /

自从5月份开始,小米开启了这项权限判断,所以之前可以正常弹出的界面现在无法弹出了。我们尝试了一些方法来绕过这个权限判断,比如启动一个前台Service来跳转、在Toast中来跳转,都无法绕过该权限判断,所以绕过权限这条路是不能走了,只能想办法正面解决。

商务谈判,让小米MIUI给默认开启此权限

我们普通APP安装后,此项权限默认是关闭的,当然有些大型APP具备和小米商务谈判的能力,小米会在系统设置中默认给予开启,比如“搜狗输入法”就是默认开启此权限的。

但是只有具备足够影响力的公司才能与小米谈判,而且要满足他们的各种条件,才能让其系统中默认为我们开启此权限,我们普通APP是做不到的,所以此方法不适用于我们普通APP。

进行权限判断,通过代码请求开启权限

我们面对普通权限请求一般处理方案是这样的,先判断是会否具有此项权限,如果没有就请求开启此权限。但是对于小米的这种厂商独有的权限,我们的难点在于没有相关API可以判断是否具备此权限,也没有API去申请此权限,所以这条路是不通的。当然可以通过反射之类的方法,去调用他系统层的一些东西,不过这样不太靠谱,研发代价也比较大,所以可以说是没有直接解决方案的。

那么这个问题就无解了么?我通过一系列讨论最后通过迂回方法进行解决,得出最终可用解决方案:

判断要启动的Activity是否被成功启动,如果没有则代表没有获取到权限。

弹窗提示用户去开启该权限。(由于没有后台弹出权限,无法直接跳转到系统的权限设置页,所以弹窗提示)

这里难点在于判断Activity是否被成功打开了,至于弹窗引导自己定制引导内容即可。下面一节,具体对如何判断Activity被成打开进行说明。

/ 判断Activity是否被成功启动 /

这里同样也尝试了多种方案,比如:

在每个Activity的OnCreate()方法中进行处理(最终放弃)

当startActivity()后做一个0.5s倒计时逻辑,在要启动的Activity的OnCreate()方法中发一个广播来去掉该倒计时,如果没有被取消那么就说明没有启动成功。这样需要在每个Activity中做处理,过于繁琐,所以放弃。

通过Activity栈获取栈顶Activity判断(最终放弃)

当startActivity()后做一个0.5s倒计时逻辑,然后通过Activity栈的管理获得栈顶Activity,判断是否打开成功。这样避免每个Activity都要处理,比如我们可以查到常用方法是这样的 :

这个问题在于这些方法在Android 5.1之后也失效了,网上也有其他方法,使用usageStatsManager.queryUsageStats要获取额外的权限,所以也不是合理的方法。最终这个方法也不能实现可用性。

最终解决方案

工具类统一处理startActivity()方法,同时开启一个0.5s的倒计时。在Application中自己管理记录栈顶的Activity,用于判断栈顶Activity并完成是否成功打开,如果没有打开则展示引导弹窗。

这样把启动Activity和权限判断都在一个工具类中处理,以后只需要调用这个工具类,就实现了启动Activity、判断权限、以及权限弹窗引导。同时自己进行Activity栈的管理,解决了无法在各个Android版本上完成对Activity启动判断的问题。

首先在Application中监听所有Activity的生命周期,来记录栈顶Activity:

然后在工具类中做统一处理:

最后使用的时候直接调用工具类的方法startActivity()即可:

/ 总结 /

小米后台弹出权限问题的解决,是通过曲线救国的方法解决的,因为没有直接的API可调用。这里封装成了一个工具类,任何需要添加权限判断的地方只需要调用工具类的方法就行了,这样既实现了统一管理,又方便调用,所以这是我们最终采用的方案。

我们转型不易,新知识内容立足于正能量、实用,觉得《终极指南:如何优雅地解决小米手机后台弹窗权限问题》对你有帮助,请留言收藏!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(5)
  1. 寻梦少年2024-02-21 21:23寻梦少年[黑龙江省网友]27.99.226.255
    小米手机后台弹窗问题一直碍事,期待这篇指南的帮助!
    顶8踩0
  2. 久日如一2024-02-21 21:15久日如一[河南省网友]103.46.3.220
    我的小米手机每天都有弹窗问题,希望这篇指南能帮到我!
    顶6踩0
  3. 啊阿2024-02-21 21:06啊阿[福建省网友]116.50.14.41
    解决小米手机后台弹窗问题真的太重要了,谢谢分享!
    顶10踩0
  4. 梦书2024-02-21 20:58梦书[江苏省网友]45.115.159.35
    终于有人写了这样一篇指南,太感谢了!
    顶8踩0
  5. 若水き浮生2024-02-21 20:50若水き浮生[北京市网友]43.224.140.212
    小米手机后台弹窗问题一直困扰着我,这篇指南简直及时雨啊!
    顶5踩0
相关阅读
小米MIUI12震撼登场:动画不输iOS 超级壁纸惊艳首秀

小米MIUI12震撼登场:动画不输iOS 超级壁纸惊艳首秀

小米MIUI12最新版本正式发布,全新动画效果媲美iOS,令人惊艳!MIUI12首次推出超级壁纸功能,让用户能够在屏幕上欣赏精美的动态壁纸,为手机带来更加生动的体验。MIUI12还改进了系...

2024-01-27 #综合

关于手机ROOT

关于手机ROOT

不知道有没有那位朋友跟小弟一样新手机拿到就要ROOT,虽然知道ROOT后一定破保,但是习惯ROOT后没有ROOT就会觉得不是一只完整的手机小米手机怎幺获取root权

2023-07-25 #活动

最新国产手机排行榜(中国手机排行榜)

最新国产手机排行榜(中国手机排行榜)

如果要从性能上来说的话因为高通的骁龙855处理器性能是要强过华为的麒麟980的,所以在处理器跑分上当然还是高通阵营的手机要高一点,小米9就是今年小米的

2023-05-28 #活动

如何选择好用的输入法?除了搜狗输入法 还有哪些值得推荐的输入法?

如何选择好用的输入法?除了搜狗输入法 还有哪些值得推荐的输入法?

什么输入法好用?除了搜狗输入法还有什么输入法好用?当提到优秀的输入法,搜狗输入法确实是一个很不错的选择,其智能预测和丰富的功能备受用户赞誉。除了搜狗输入法,百度输入法...

2024-02-01 #综合

小米红米手机如何设置录屏和录制声音教程

小米红米手机如何设置录屏和录制声音教程

首先打开红米手机的设置菜单,找到其他设置选项,然后选择录屏设置,在其中可以设定录屏的分辨率、帧率和音频来源

2024-01-26 #综合

使用按键精灵后台脚本和脚本运行技巧提高效率

使用按键精灵后台脚本和脚本运行技巧提高效率

按键精灵后台脚本是按键精灵的一个重要功能模块,可以实现后台自动运行脚本的功能,提高工作效率

2024-01-25 #综合

苹果手机后台切换时重启

苹果手机后台切换时重启

苹果手机后台切换时重启二可能是因为软件不兼容当前的系统版本,这点和电脑很相似,比如有些程序,在windows XP下可以正常使用,但在win7中就不能使用这种情况需要等待该软件的升级三可能是个人在使用过下面我们一起来看看吧。

2022-12-28 #生活百科

李连杰真实身份惊人 网传爷爷身份神秘(疑似后台强大)

李连杰真实身份惊人 网传爷爷身份神秘(疑似后台强大)

李连杰真实身份惊人李连杰的真实身份其实并不神秘,他出生在一个普通的家庭,父亲李清泉是一位普通的技术工人,母亲张凤兰只是公共汽车上的一名售票员,

2023-01-20 #探索发现

用小米手机会比较推荐哪家电信吗

用小米手机会比较推荐哪家电信吗

身边朋友大用iPhone手机,都是使用中华或远传居多因为一只2、3万的手机捨不得买之前用过中华,有时候会满卡的听朋友说是因为用户多所以才会塞车所以目前

2023-09-23 #休闲