Android 6.0权限注意点

来源:互联网 发布:centos 7 dhcp ip配置 编辑:程序博客网 时间:2024/06/15 02:14

Android 6.0权限注意点

  1. checkSelfPermission
    该方法用于判断权限状态,返回值有android.content.pm.PackageManager#PERMISSION_GRANTED和android.content.pm.PackageManager#PERMISSION_DENIED。
    如果设备为6.0以下,不管权限是否被禁止,该方法都返回PERMISSION_GRANTED。(6.0以下没有方法获取权限状态,然而某些国产手机通过系统工具禁止权限,可能会造成问题。解决方案参考)
    如果targetSdkVersion<23,该方法都返回PERMISSION_GRANTED。

  2. shouldShowRequestPermissionRationale
    该方法用于判断权限状态以在合适的时机解释应用需要权限的原因。
    如果应用之前请求过此权限但用户拒绝了请求,此方法将返回 true。
    如果应用第一次请求权限或者用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了 Don’t ask again 选项,此方法将返回 false。如果设备规范禁止应用具有该权限,此方法也会返回 false。

  3. requestPermissions
    该方法用于请求权限。系统将向用户显示一个对话框。当用户响应时,系统将调用应用的 onRequestPermissionsResult() 方法。
    如果在fragment中使用ActivityCompat.requestPermissions方法,系统会回调activity的onRequestPermissionsResult。如果使用requestPermissions方法,则回调fragment的onRequestPermissionsResult方法。
    另外,当用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了 Don’t ask again 选项,不会显示对话框。但依然会回调onRequestPermissionsResult,回调结果为PERMISSION_DENIED。

参考
API Guide
Android 6.0权限机制及开发流程详解
targetSdkVersion 23以下6.0中调用checkSelfPermission的问题
Is it available to set checkSelfPermission on minimum SDK < 23?

0 0