Android MediaStore查询特定专辑≥20秒音频运行崩溃如何解决
问题原因
你编写的selection字符串拼接时未在两个查询条件之间添加SQL逻辑连接符AND和必要空格,导致最终生成的SQL查询语句语法错误,从抛出的异常日志可以看到生成的WHERE条件段为(duration >= ?album =?),不符合SQL语法规范,因此触发SQLite异常崩溃。
修复后的代码
val selection = "${MediaStore.Audio.Media.DURATION} >= ? AND ${MediaStore.Audio.Albums.ALBUM} = ?" val selectionArgs = arrayOf( TimeUnit.MILLISECONDS.convert(20, TimeUnit.SECONDS).toString(), albumData?.albumName )
补充注意点
- 如果你后续还要新增更多查询条件,每个条件之间都需要用
AND或者OR这类逻辑运算符连接,同时注意前后加空格避免字符串拼接后单词粘连 - 如果
albumData?.albumName可能为null,建议提前做非空判断,避免selectionArgs出现null值导致查询异常
内容的提问来源于stack exchange,提问作者Kaunain
相关产品推荐
相关产品推荐

