You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 14中READ_EXTERNAL_STORAGE权限请求不触发及回调失效问题

Android 14下音乐播放器权限请求后onRequestPermissionsResult未触发的解决方法

问题核心原因

Android 14(API 34)中,READ_EXTERNAL_STORAGE权限已被废弃,针对音频文件的读取需使用READ_MEDIA_AUDIO权限。你当前请求的是旧权限,Android 14系统不会正确处理该请求,因此不会回调onRequestPermissionsResult方法。

解决步骤

1. 更新Manifest权限声明

替换或补充Manifest中的权限配置,兼容新旧版本:

<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<!-- 仅在Android 12及以下版本生效 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

2. 修改权限请求代码

将请求的权限替换为READ_MEDIA_AUDIO:

private static final int REQUEST_PERMISSION = 100;

// 权限检查与请求逻辑
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_AUDIO) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_MEDIA_AUDIO}, REQUEST_PERMISSION);
} else {
    getSongs();
}

此时onRequestPermissionsResult方法会正常触发,无需修改回调逻辑(确保REQUEST_PERMISSION常量一致即可)。

3. (推荐)迁移到Activity Result API

onRequestPermissionsResult已被标记为过时,AndroidX推荐使用Activity Result API处理权限请求,逻辑更简洁且避免回调异常:

private ActivityResultLauncher<String> requestAudioPermissionLauncher;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 初始化权限请求器
    requestAudioPermissionLauncher = registerForActivityResult(
            new ActivityResultContracts.RequestPermission(),
            isGranted -> {
                if (isGranted) {
                    getSongs();
                } else {
                    // 权限被拒绝后的处理逻辑
                }
            });

    // 检查并请求权限
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_AUDIO) != PackageManager.PERMISSION_GRANTED) {
        requestAudioPermissionLauncher.launch(Manifest.permission.READ_MEDIA_AUDIO);
    } else {
        getSongs();
    }
}

该方式无需重写onRequestPermissionsResult,系统会直接回调到注册的逻辑中,稳定性更高。

内容的提问来源于stack exchange,提问作者Youssef Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 09:14:57