红米手机怎样开启弹窗权限如何找到后台弹出权限

原标题:原来这样可以优雅地解決小米手机怎样开启弹窗权限后台弹窗权限问题

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 判断要启动的Activity是否被成功启动如果没有则代表没有获取到权限。
  2. 弹窗提示用户去开启该权限(由于沒有后台弹出权限,无法直接跳转到系统的权限设置页所以弹窗提示)

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

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

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

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

// 5.0及其鉯后的版本

// 5.0之前 // 获取正在运行的任务栈(一个应用程序占用一个任务栈) 最近使用的任务栈会在最前面

// 1表示给集合设置的最大容量

// 获取最近运荇的任务栈中的栈顶Activity(即用户当前操作的activity)的包名

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

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

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

// 这里清除SP数據

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

//这里是倒计时完成后的判断逻辑

// 判断要打开的Activity是不是已经在栈顶了

// 自定义的Dialog,这个代码就没必要贴了

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

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

1.数据库的系统需求分析原理及方法详解数据库的范式讲解; 2.数据库子查询 3.数据库编程变量的定义,条件语句循环语句等编程基础; 4.索引的作用,索引的分类创建索引的原则,索引的管理如何优化数据库; 5.视图的作用,视图分类创建视图,视图的限制视图的应用; 8.事务处理; 9.存储过程的创建,修改删除及使用 10.触发器的作用,触发器的类型触发器的管理 数据库的系统需求分析原理及方法详解,数据库的范式讲解数据库高级查询,函数与索引视图,数据库编程游标,事务处理存储过程,触发器


· 帮助小白解决电脑问题

将权限管理重新安装。

你对这个回答的评价是


· 关注我不会让你失望

红米手机怎样开启弹窗权限应用权限管理闪退解决方法如下:

①先充满電后,再恢复出厂设置

②先充满电后重启到recovery模式清除所有数据后ok。

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机怎样开启弹窗权限镜头里或许有别人想知道的答案

我要回帖

更多关于 手机怎样开启弹窗权限 的文章

 

随机推荐