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

安卓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)

具体修复步骤

  1. 打开你的MainActivity.kt,定位到第123行左右的ContentResolver.query调用代码
  2. 找到对应的排序参数(也就是query方法的第5个参数),你现在的写法应该类似"date_addedDESC"
  3. 把它改成字段和方向之间加空格的正确格式:"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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 08:48:02