安卓Kotlin音乐播放器应用启动时抛出IllegalArgumentException问题求助
安卓Kotlin音乐播放器应用启动时抛出IllegalArgumentException问题求助
嘿,我仔细看了你的报错日志,问题根源一下子就找到了!
错误核心原因
从报错栈的**Caused by: java.lang.IllegalArgumentException: Invalid token date_addedDESC**可以明确:你在查询媒体库内容的时候,排序参数的格式写错了——把排序字段date_added和排序方向DESC直接连在一起写了,中间没有加空格,导致系统把它识别成了一个无效的token,进而触发了这个异常。
从调用链能精准定位问题代码位置:
at com.example.musicplayer.MainActivity.getAllAudio(MainActivity.kt:123)
具体修复步骤
- 打开你的
MainActivity.kt,定位到第123行左右的ContentResolver.query调用代码 - 找到对应的排序参数(也就是query方法的第5个参数),你现在的写法应该类似
"date_addedDESC" - 把它改成字段和方向之间加空格的正确格式:
"date_added DESC"
给你一个贴合场景的正确代码示例:
// 正确的媒体库查询写法,注意排序参数的空格 val audioCursor = contentResolver.query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, arrayOf(MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATE_ADDED), null, null, "${MediaStore.Audio.Media.DATE_ADDED} DESC" // 这里的空格是关键! )
额外小建议
推荐使用MediaStore提供的常量(比如MediaStore.Audio.Media.DATE_ADDED)来拼接排序参数,而不是直接写字符串"date_added",这样能减少拼写错误的概率,代码也更易维护。
备注:内容来源于stack exchange,提问作者Mr.Romeo
相关产品推荐
相关产品推荐

