Android 6.0动态权限

动态权限分为两类

1.不涉及隐私的权限

需要在Manifest中声明

  • 网络权限
  • 蓝牙权限
  • NFC权限等

2.涉及隐私的权限

也需要在Manifest中声明

  • SD卡读写权限
  • 短信读写权限
  • 联系人读写权限等

3.需要动态授权的权限组

  • **CALENDAR(日历) **
    READ_CALENDAR
    WRITE_CALENDAR
  • CAMERA(相机)
    CAMERA
  • CONTACTS(联系人)
    READ_CONTACTS
    WRITE_CONTACTS
    GET_ACCOUNTS
  • LOCATION(位置)
    ACCESS_FINE_LOCATION
    ACCESS_COARSE_LOCATION
  • MICROPHONE(麦克风)
    RECORD_AUDIO
  • **PHONE(手机) **
    READ_PHONE_STATE
    CALL_PHONE
    READ_CALL_LOG
    WRITE_CALL_LOG
    ADD_VOICEMAIL
    USE_SIP
    PROCESS_OUTGOING_CALLS
  • SENSORS(传感器)
    BODY_SENSORS
  • SMS(短信)
    SEND_SMS
    RECEIVE_SMS
    READ_SMS
    RECEIVE_WAP_PUSH
    RECEIVE_MMS
  • STORAGE(存储卡)
    READ_EXTERNAL_STORAGE
    WRITE_EXTERNAL_STORAGE

4.动态申请权限

最简单的方法就是用Android Studio新建一个login项目,选择Login Activity项目

  • Paste_Image.png
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
            return true;
        }
        if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
            return true;
        }
        if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
            Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE)
                    .setAction(android.R.string.ok, new View.OnClickListener() {
                        @Override
                        @TargetApi(Build.VERSION_CODES.M)
                        public void onClick(View v) {
                            requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
                        }
                    });
        } else {
            requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
        }
        return false;
    }
Paste_Image.png

checkSelfPermission(),shouldShowRequestPermissionRationale(),requestPermissions(),在Android SDK 23以上的API中,已经存在的方法。Activity继承AppCompatActivity就会存在。 如果使用低于23版本的SDK,可以使用v4 包的中AppCompat.checkSelfPermission()去调用,这是为了兼容23以下版本的兼容包工具。

Paste_Image.png

这里的数据就是你需要请求的权限组
当权限请求成功时,不要忘记,权限请求成功之后的回调,需要重写onRequestPermissionsResult()方法,如下

  • Paste_Image.png

5.推荐一个动态申请权限的类库,GitHub上1000多star

直接点击地址:
AndPermissionhttps://github.com/yanzhenjie/AndPermission

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

推荐阅读更多精彩内容