系统权限

以下内容均摘自官网,此处仅作重点整理

所有版本的 Android 中,您的应用都需要在其应用清单中同时声明它需要的正常权限和危险权限

  • 如果设备运行的是 Android 5.1 或更低版本,或者应用的目标 SDK 为 22 或更低:如果您在清单中列出了危险权限,则用户必须在安装应用时授予此权限;如果他们不授予此权限,系统根本不会安装应用。
  • 如果设备运行的是 Android 6.0 或更高版本,或者应用的目标 SDK 为 23 或更高:应用必须在清单中列出权限,并且它必须在运行时请求其需要的每项危险权限。用户可以授予或拒绝每项权限,且即使用户拒绝权限请求,应用仍可以继续运行有限的功能。

Android 在ActivityCompat类中提供了一个静态方法,即shouldShowRequestPermissionRationale(),如果应用之前请求过此权限但用户拒绝了请求,此方法将返回true。您可以采用的一个方法是仅在用户已拒绝某项权限请求时提供解释。如果用户继续尝试使用需要某项权限的功能,但继续拒绝权限请求,则可能表明用户不理解应用为什么需要此权限才能提供相关功能。对于这种情况,比较好的做法是显示解释。
而使用EasyPermissions框架时,它的

    public static void requestPermissions(
            @NonNull Activity host, @NonNull String rationale,
            int requestCode, @NonNull String... perms)

方法中,第二个参数rationale就是要显示的解释信息,而且此方法中也调用了shouldShowRequestPermissionRationale()。显示解释的对话框仅在用户之前已拒绝某项权限但又接着使用需要此权限的功能时弹出,即第一次请求不弹出,第二次请求前弹出

Paste_Image.png
  • 如果应用请求其清单中列出的危险权限,而应用目前在权限组中没有任何权限,则系统会向用户显示一个对话框,描述应用要访问的权限组。对话框不描述该组内的具体权限。例如,如果应用请求READ_CONTACTS 权限,系统对话框只说明该应用需要访问设备的联系信息。如果用户批准,系统将向应用授予其请求的权限。
  • 如果应用请求其清单中列出的危险权限,而应用在同一权限组中已有另一项危险权限,则系统会立即授予该权限,而无需与用户进行任何交互。例如,如果某应用已经请求并且被授予了 READ_CONTACTS 权限,然后它又请求 WRITE_CONTACTS,系统将立即授予该权限。

参考文章:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • https://developer.android.google.cn/training/permissions/...
    acc8226阅读 3,954评论 0 0
  • Android 是一个特权分离(privilege-separated)操作系统,在其中每个应用都以一个不同的系统...
    DanieX阅读 9,538评论 0 3
  • 发热放入Android6.0带来了新的权限管理方式,根据提供的官方文档,再加上自己的理解,做了以下汇总仅供大家伙参...
    PapiAP阅读 5,708评论 0 6
  • 纤细的雨蒙上日头 云给你的慵懒 窝在街角 风吹出的颓废 掖在耳边 姗姗来迟的梦 凝结,扩张,吐丝,结网 归期不定的...
    三水芒芒阅读 1,495评论 2 3
  • 体验入:晚上的会议结束了,各部门都明确知道了自己的任务和业绩,如果完不成目标,都自愿领受了属于自己的惩罚 找核心:...
    Tracy_zhang阅读 936评论 0 2