为什么小米自带软件没有权限管理
Ⅰ 小米开发版怎么没有权限管理软件了
小米手机里面需要管理root权限的应用,是需要应用进行请求,里面才会出现root给应用进行授权root权限,下面是以QQ为例的讲解说明:
1、首先进入安全中心,然后进入root权限管理。
2、此时没有说明可以授权的应用。
3、然后进入QQ,将QQ的截屏功能打开。(需要手机授权root权限)
4、然后进入安全中心,里面就会出现对QQ授取root权限。
Ⅱ 小米视频的权限管理怎么没了
在小米手机的应用权限管理中有一个“后台弹出界面权限”,该项权限会限制当APP处在后台时弹出Activity的动作,该权限时默认关闭的,可以在小米系统的权限管理页看到:
这个时候正常的startActivity方法无法弹出Activity,在Log中筛选MIUILOG查看系统日志:
我们可以看到其中有权限拒绝的具体说明:
ExtraActivityManagerService: MIUILOG- Permission Denied Activity
可以看到是权限原因拒绝了启动Activity动作,随后我们在小米的官方论坛中也看到了他们的声明:
/ 解决方案 /
自从2019年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都要处理,比如我们可以查到常用方法是这样的 :
publicstaticString getTopActivity(Context context){
String packageName ;
if(Build.VERSION.SDK_INT > 21) {
// 5.0及其以后的版本
List<ActivityManager.AppTask> tasks = mActivityManager.getAppTasks;
if(null!= tasks && tasks.size > 0) {
for(ActivityManager.AppTask task:tasks){
packageName = task.getTaskInfo.baseIntent.getComponent.getPackageName;