从SD卡提取音频文件时出错
问题描述:
我想从SD卡提取音频文件。这里是我使用的代码:从SD卡提取音频文件时出错
//the URI where I want the query to be performed
Uri externalAudio = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String projection[] = new String[] {"android.provider.MediaStore.Audio.Media.TITLE"};
Cursor curExternalAudio = cr.query(externalAudio, projection, null, null, null);
//code to display result
错误是在最后一行,但它是由投影数组引起的。在logcat中显示的错误如下:
E/AndroidRuntime(1994): Caused by: android.database.sqlite.SQLiteException: near ".": syntax error (code 1): , while compiling: SELECT android.provider.MediaStore.Audio.Media.TITLE FROM audio
有人可以告诉我这个代码有什么问题?
答
当前您通过android.provider.MediaStore.Audio.Media.TITLE
作为投影Array中的列名称,该列不是有效的列名称。您需要传递值android.provider.MediaStore.Audio.Media.TITLE
,这也是ContentProvider中的字符串列名称。变更投影阵列为:
String projection[] = new String[] {android.provider.MediaStore.Audio.Media.TITLE};
Cursor curExternalAudio = cr.query(externalAudio, projection, null, null, null);
注: -的android.provider.MediaStore.Audio.Media.TITLE
字符串值是 “标题”
使用'字符串投影[] =新的String [] {MediaStore.Audio.Media .TITLE};'代替'String projection [] = new String [] {“android.provider.MediaStore.Audio.Media.TITLE”};'用于投影参数 – 2013-03-28 07:18:35
谢谢,它解决了这个问题。 但是,你能解释究竟是什么导致了错误? – Rajat 2013-03-28 07:23:15
当我们传递'android.provider.MediaStore.Audio.Media.TITLE'时,意味着我们从'MediaStore'类访问'TITLE'常量,其中'TITLE'的值是'title',你也可以看到grepcode链接,我的答案更为详尽 – 2013-03-28 07:31:18