华为mate20读取外置存储权限在哪,华为手机mate 20情景模式怎么消除

首页 > 实用技巧 > 作者:YD1662023-05-10 05:32:06

pixel2弹窗对应设置

以基于Android 9.0的MIUI10.4.8为例:

华为mate20读取外置存储权限在哪,华为手机mate 20情景模式怎么消除(17)

MIUI弹窗对应设置

4. 弹窗选项对四个函数的影响。

弹窗弹出,用户操作指定选项后,下次再调用四个函数会有如下现象:

华为mate20读取外置存储权限在哪,华为手机mate 20情景模式怎么消除(18)

UI选项与函数调用结果

权限分类

Android 6.0系统开始,权限被分为Normal permissions、Signature permissions、Dangerous permissions,其中Signature permissions比较超纲,仅介绍普通权限和危险权限。

其中普通权限使用方法跟低版本一样,只用在Manifest里申请就可使用。大部分低风险权限,不需要通过确认框这种形式让用户显示的同意。比如访问网络、检查WiFi状态等权限。

另一种危险权限,也就是本文介绍的对象,它的产生主要为了保护用户隐私,换言之,涉及到用户隐私的一些权限,属于危险权限。例如:相机权限、定位权限、PHONE_STATE(可读取手机IMEI等识别码)权限等。

危险权限和权限组。(不同系统危险权限可能不同)

华为mate20读取外置存储权限在哪,华为手机mate 20情景模式怎么消除(19)

危险权限

关于权限,还有一个权限组的概念。例如,读取外置存储权限(READ_EXTERNAL_STORAGE)和写入外置存储权限(WRITE_EXTERNAL_STORAGE),同属存储权限组(STORAGE)。

权限组有什么作用呢?在Android O之前,同一权限组的权限,只要用户授权一个,则整个权限组都被授权。

例如:

步骤一:Manifest中加入了READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE

步骤二:在程序中只申请了READ_EXTERNAL_STORAGE权限,用户同意后

步骤三:在程序中未申请WRITE_EXTERNAL_STORAGE权限,并尝试直接使用

结果:可以直接使用,同组权限不需再申请。

而Android O对此进行了修改。同一权限组不同权限,必须都要动态申请权限。但是如果第一个被用户同意了,后面的同组权限再申请时,就不会再弹窗而是被直接同意了。

例如:

步骤一:Manifest中加入了READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE

步骤二:在程序中只申请了READ_EXTERNAL_STORAGE权限,用户同意后

步骤三:在程序中未申请WRITE_EXTERNAL_STORAGE权限,并尝试直接使用

结果:崩溃。

修改步骤三:在程序中申请WRITE_EXTERNAL_STORAGE权限

结果:不会弹出授权弹窗,同一权限组直接被自动授权

But,部分ROM修改了此逻辑。比如,华为9.0以下系统,遵循的是原生系统Android 8.0之前的逻辑。但是,华为9.0以后系统和小米6.0以后系统,都用的比原生系统Android 8.0更严格的逻辑。每个权限都需要单独申请权限,而且会单独弹窗要求用户确认。

例如:

步骤一:Manifest中加入了READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE

步骤二:在程序中只申请了READ_EXTERNAL_STORAGE权限,用户同意后

步骤三:在程序中申请WRITE_EXTERNAL_STORAGE权限

结果:会弹出授权弹窗,需要用户再次授权

带来问题:相同权限组不同权限的授权弹窗是一毛一样的。这就导致用户很懵逼,明明刚刚授权过了,为什么又要问我一次。

华为mate20读取外置存储权限在哪,华为手机mate 20情景模式怎么消除(20)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.