MainActivity.java
Step1. 检查权限:checkSelfPermission
Step2. 请求权限:requestPermissions
Step3. 重载请求回调函数:onRequestPermissionsResult
private final int REQUEST_CODE_ADDRESS = 100;
@RequiresApi(api = Build.VERSION_CODES.M)
private void CheckPermission(){
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this,Manifest.permission.WRITE_CALENDAR)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this,Manifest.permission.READ_CALENDAR)
!= PackageManager.PERMISSION_GRANTED) {
//不需要解释, 我们可以直接开始请求权限
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE
,Manifest.permission.WRITE_EXTERNAL_STORAGE
,Manifest.permission.READ_CALENDAR
,Manifest.permission.WRITE_CALENDAR},REQUEST_CODE_ADDRESS);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ADDRESS:
if ((grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] !=PackageManager.PERMISSION_GRANTED)
&& (grantResults[2] != PackageManager.PERMISSION_GRANTED || grantResults[3] !=PackageManager.PERMISSION_GRANTED)) {
//Permission Denied 存储&日历权限被拒绝
Snackbar.make(this.findViewById(R.id.homeFragmentView),"存储和日历读写均未授权!请去设置里手动开启权限!",Snackbar.LENGTH_SHORT).show();
}else if((grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] ==PackageManager.PERMISSION_GRANTED)
&& (grantResults[2] != PackageManager.PERMISSION_GRANTED || grantResults[3] !=PackageManager.PERMISSION_GRANTED)){
// Permission Denied 日历权限被拒绝
Snackbar.make(this.findViewById(R.id.homeFragmentView),"日历读写权限未授予!请去设置里手动开启权限!",Snackbar.LENGTH_SHORT).show();
}else if(grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED){
// Permission Denied 存储权限被拒绝
Snackbar.make(this.findViewById(R.id.homeFragmentView),"存储读写权限未授予!请去设置里手动开启权限!",Snackbar.LENGTH_SHORT).show();
}else {
Snackbar.make(this.findViewById(R.id.homeFragmentView),"授权成功!",Snackbar.LENGTH_SHORT).show();
}
break;
default:
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}