1. Activity请求权限 (Android6.0 = TargetAPI 23)
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {//申请数据存储权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
WRITE_EXTERNAL_STORAGE_REQUEST_CODE);
}
2. 请求回调(授权或者拒绝)
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted 授权
} else {
// Permission Denied 拒绝
}
}
}
3. Fragment请求权限
在Fragment中申请权限,不要使用ActivityCompat.requestPermissions,
直接使用Fragment的requestPermissions方法,
否则会回调到Activity的onRequestPermissionsResult
4. 运行时权限
- READ_CALENDAR //日历
- WRITE_CALENDAR
- CAMERA //相机
- READ_CONTACTS //联系人
- WRITE_CONTACTS
- GET_ACCOUNTS
- ADD_VOICEMAIL
- ACCESS_FINE_LOCATION //定位
- ACCESS_COARSE_LOCATION
- PROCESS_OUTGOING_CALLS
- RECORD_AUDIO //录音
- READ_PHONE_STATE
- CALL_PHONE //打电话
- READ_CALL_LOG
- WRITE_CALL_LOG
- USE_SIP
- BODY_SENSORS
- SEND_SMS //短信
- RECEIVE_SMS
- READ_SMS
- RECEIVE_WAP_PUSH
- RECEIVE_MMS
- READ_EXTERNAL_STORAGE //存储
- WRITE_EXTERNAL_STORAGE