当我使用原始的 Google 音乐播放器时,我的应用程序运行良好。它找到了歌曲和播放列表,没问题。自从我开始使用 Play Music 以来,我的应用程序找不到任何这些内容。这是我的代码:
Cursor cursor = contentResolver.query(uri, null, MediaStore.Audio.Media.IS_MUSIC + " = 1", null, null);
if (cursor == null || !cursor.moveToFirst()) {
Log.e(TAG, "Could not locate any music on device.");
return;
}
cursor.close();
知道为什么会发生这种情况。我刚刚收到第一个投诉,购买我的应用程序的人无法播放音乐。
也许已经晚了,但我做了这样的事情:
String[] projection = {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.ALBUM_ID,
MediaStore.Audio.Media.DURATION
};
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
null,
null);
也许,您需要请求音频许可。
在您的应用程序清单中:
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
然后获取音频。
val locationPermissionRequest =
registerForActivityResult<String, Boolean>(
ActivityResultContracts.RequestPermission(),
ActivityResultCallback<Boolean> {
if (it) {
// get audio
getMusic()
}
}
)
// request permission
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (ActivityCompat.checkSelfPermission(
this@MainActivity,
Manifest.permission.READ_MEDIA_AUDIO
) != PackageManager.PERMISSION_GRANTED
) {
locationPermissionRequest.launch(Manifest.permission.READ_MEDIA_AUDIO)
return
}
}
https://developer.android.com/training/data-storage/shared/media#media-location-permission