private static final int VIDEO_PERMISSIONS_CODE = 1; //需要的权限 private static final String[] VIDEO_PERMISSIONS = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; //申请权限 private void requestPermission() { // 当API大于 23 时,才动态申请权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { ActivityCompat.requestPermissions(MainActivity.this, VIDEO_PERMISSIONS, VIDEO_PERMISSIONS_CODE); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case VIDEO_PERMISSIONS_CODE: //权限请求失败 if (grantResults.length == VIDEO_PERMISSIONS.length) { for (int result : grantResults) { if (result != PackageManager.PERMISSION_GRANTED) { //弹出对话框引导用户去设置 showDialog(); Toast.makeText(MainActivity.this, "请求权限被拒绝", Toast.LENGTH_LONG).show(); break; } } }else{ Toast.makeText(MainActivity.this, "已授权", Toast.LENGTH_LONG).show(); } break; } } //弹出提示框 private void showDialog(){ AlertDialog dialog = new AlertDialog.Builder(this) .setMessage("该应用需要读写权限,是否去设置?") .setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); goToAppSetting(); } }) .setNegativeButton("否", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setCancelable(false) .show(); } // 跳转到当前应用的设置界面 private void goToAppSetting(){ Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); requestPermission(); }