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

Android 13下READ MEDIA AUDIO授权后音乐playlist无法显示求助

针对Android 13音乐应用无法读取音频文件的排查方案

1. 确认权限申请逻辑是否完整

  • 除了在Manifest中声明READ_MEDIA_AUDIO,需确保代码中正确申请权限,且授权成功后重新触发音频扫描逻辑,不要仅在启动时扫描一次。
  • 示例Java代码:
// 检查权限状态
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_MEDIA_AUDIO)
        != PackageManager.PERMISSION_GRANTED) {
    ActivityResultLauncher<String> requestPermissionLauncher =
            registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
                if (isGranted) {
                    // 授权成功后立即执行音频扫描
                    loadMusicFiles();
                }
            });
    requestPermissionLauncher.launch(Manifest.permission.READ_MEDIA_AUDIO);
} else {
    // 已授权,直接启动扫描
    loadMusicFiles();
}

2. 适配Android 13的媒体查询逻辑

Android 13对媒体查询的Uri和投影字段有严格要求,避免使用废弃字段:

  • 正确使用查询Uri:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
  • 必须指定所需投影字段,禁止传入null,示例:
String[] projection = {
        MediaStore.Audio.Media._ID,
        MediaStore.Audio.Media.TITLE,
        MediaStore.Audio.Media.ARTIST,
        MediaStore.Audio.Media.DURATION
};

Cursor cursor = getContentResolver().query(
        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
        projection,
        MediaStore.Audio.Media.IS_MUSIC + " != 0",
        null,
        MediaStore.Audio.Media.TITLE + " ASC"
);
  • 注意:Android 10及以上版本中MediaStore.Audio.Media.DATA字段已隐藏,如需访问文件内容,改用ContentResolver.openFileDescriptor(),不要直接读取路径。

3. 触发系统媒体库索引

若系统未及时索引音频文件,可手动触发扫描:

// 替换为实际音频文件路径
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File("/sdcard/Music/test.mp3"))));

也可引导用户通过系统文件管理应用打开音频文件,触发自动索引。

4. 检查目标SDK版本

确保build.gradle中targetSdkVersion设置为33(Android 13),低版本目标SDK可能导致权限逻辑兼容问题。

5. 测试多存储位置的音频文件

分别测试内部存储和外部SD卡中的音频文件,部分设备对SD卡访问有额外限制,需确认SD卡挂载正常且应用具备访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:20:56