public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] permission = {Manifest.permission.CALL_PHONE};
//判断SDK版本 Build.VERSION_CODES.M = 23
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//需要申请动态授权
int selfPermission = ContextCompat.checkSelfPermission(this, permission[0]);
// 权限是否已经 授权 GRANTED---授权 DINIED---拒绝
if (selfPermission != PackageManager.PERMISSION_GRANTED) {
/**
* 注意:
* 如果用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了 Don't ask again 选项,此方法将返回 false。
* 如果设备规范禁止应用具有该权限,此方法也会返回 false。
*/
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CALL_PHONE)) {
Log.i("DINIED", "onViewClicked: 该权限请求已经被 Denied(拒绝)过。");
//弹出对话框,告诉用户申请此权限的理由,然后再次请求该权限。
} else {
Log.i("DINIED", "onViewClicked: 该权限请未被denied过");
ActivityCompat.requestPermissions(this, permission, 1);
}
} else {
//打开相册
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Log.i("requestCode", "onRequestPermissionsResult: requestCode=" + requestCode);
switch (requestCode) {
case 1:
if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
//打开相册
} else {
Toast.makeText(this, "you denied the permission", Toast.LENGTH_SHORT).show();
Log.i("DINIED", "onRequestPermissionsResult: you denied the permission");
}
break;
default:
break;
}
}
}
Android 6.0 动态权限申请
最新推荐文章于 2025-06-18 11:52:23 发布