MANAGE_EXTERNAL_STORAGE权限请求不弹出对话框问题排查
解决MANAGE_EXTERNAL_STORAGE权限请求不弹窗的问题
以下是你遗漏的关键要点:
- 特殊权限不能用常规请求方法:
MANAGE_EXTERNAL_STORAGE是Android 11(API 30)引入的特殊权限,不属于普通危险权限范畴,调用requestPermissions()不会触发弹窗,必须跳转至系统设置页让用户手动开启。 - 权限检测要用专属API:别用
checkSelfPermission()判断这个权限,它返回-1不代表权限未授予,正确检测方式是调用Environment.isExternalStorageManager()(API30+)。 - Manifest声明要规范:确保权限声明指定了最低SDK版本,正确格式如下:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" android:minSdkVersion="30" /> - 正确的请求流程示例:
private void checkStoragePermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (!Environment.isExternalStorageManager()) { Intent settingIntent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); settingIntent.setData(Uri.parse("package:" + getPackageName())); startActivityForResult(settingIntent, 1001); } } else { // 低版本兼容普通存储权限请求 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1002); } }
内容的提问来源于stack exchange,提问作者user1785730
相关产品推荐
相关产品推荐

