안녕하세요
제가 장르별 mp3 리스트를 출력하려 하는데 잘 안되서 질문 드립니다.
String[] mCursorCols = new String[] {
// "audio._id AS _id", // index must match IDCOLIDX below
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.MIME_TYPE,
MediaStore.Audio.Media.ALBUM_ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.ARTIST_ID,
"genre_name"};
String where = "genre_name" + " = '" + PlayerVariables.currentGenre + "'";
Cursor mDedatilCursor = mContentResolver
.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
mCursorCols, where,
null, null);
위처럼 커서에서 장르네임 이 일치하는 줄을 가져오는 쿼리 이구요??
근데 일반 적인 장르이름은 잘 되는데 장르이름에 특수문자(??)가 들어간 것들이 에러가 남니다.
장륵 목록은 이렇습니다.
이런식으로 되어 있습니다.
세가지 값을 가져왓구요 타이틀 장르 장르문자열의길이
09-10 15:03:24.820: D/title genre(5251): 감사 발라드 3
09-10 15:03:24.820: D/title genre(5251): 애인있어요-김진호 <unknown> 9
09-10 15:03:24.820: D/title genre(5251): Hearing my memory Pop 3
09-10 15:03:24.820: D/title genre(5251): 태양 드라마�� 4
09-10 15:03:24.820: D/title genre(5251): 생각이나 Rock 4
09-10 15:03:24.820: D/title genre(5251): 눈부신 눈물 팝 > 발라드 (Ballad), 팝 > 알앤비 (R&B) 31
09-10 15:03:24.820: D/title genre(5251): 그대를 사랑합니다 kpop.321.cn 11
09-10 15:03:24.830: D/title genre(5251): 비밀 (Special Vocal. 박완규) 록 1
09-10 15:03:24.830: D/title genre(5251): 해바라기 발라드�� 4
09-10 15:03:24.830: D/title genre(5251): 너란 사람 드라마 3
09-10 15:03:24.830: D/title genre(5251): 바람이 분다 팝 > 발라드 (Ballad) 16
09-10 15:03:24.830: D/title genre(5251): 추억 다 지워 Jazz 4
09-10 15:03:24.830: D/title genre(5251): 애상 Folk 4
09-10 15:03:24.830: D/title genre(5251): Headache Dance 5
09-10 15:03:24.830: D/title genre(5251): Good Day (Japanese Ver.) J-Pop 5
09-10 15:03:24.830: D/title genre(5251): 마녀가 된 이유 Dance Pop 9
이중에서
드라마��
발라드�� 이 것들만 선택하면 에러가 남니다. sql 에러가 뜨는데요.
09-10 15:06:00.560: E/AndroidRuntime(5251): FATAL EXCEPTION: main
09-10 15:06:00.560: E/AndroidRuntime(5251): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chocolate.djamp_std/com.chocolate.djamp_std.list.GenreDetail}: android.database.sqlite.SQLiteException: unrecognized token: "'드라마": , while compiling: SELECT artist, album, title, _data, mime_type, album_id, _data, artist_id, genre_name FROM audio WHERE (genre_name = '드라마��')
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1818)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.app.ActivityThread.access$500(ActivityThread.java:122)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.os.Handler.dispatchMessage(Handler.java:99)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.os.Looper.loop(Looper.java:132)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.app.ActivityThread.main(ActivityThread.java:4126)
09-10 15:06:00.560: E/AndroidRuntime(5251): at java.lang.reflect.Method.invokeNative(Native Method)
09-10 15:06:00.560: E/AndroidRuntime(5251): at java.lang.reflect.Method.invoke(Method.java:491)
09-10 15:06:00.560: E/AndroidRuntime(5251): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
09-10 15:06:00.560: E/AndroidRuntime(5251): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
09-10 15:06:00.560: E/AndroidRuntime(5251): at dalvik.system.NativeStart.main(Native Method)
09-10 15:06:00.560: E/AndroidRuntime(5251): Caused by: android.database.sqlite.SQLiteException: unrecognized token: "'드라마": , while compiling: SELECT artist, album, title, _data, mime_type, album_id, _data, artist_id, genre_name FROM audio WHERE (genre_name = '드라마��')
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:180)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:369)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.content.ContentProviderProxy.query(ContentProviderNative.java:405)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.content.ContentResolver.query(ContentResolver.java:302)
09-10 15:06:00.560: E/AndroidRuntime(5251): at com.chocolate.djamp_std.list.GenreDetail.initialize(GenreDetail.java:80)
09-10 15:06:00.560: E/AndroidRuntime(5251): at com.chocolate.djamp_std.list.GenreDetail.onCreate(GenreDetail.java:46)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
09-10 15:06:00.560: E/AndroidRuntime(5251): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782)
09-10 15:06:00.560: E/AndroidRuntime(5251): ... 11 more
이거 해결방법 혹시 아시는 분 계신가요... 좀 아시는 분한테 물어보니까 sql 문에 특수문자가 등어가서 그런거라고 하시면서,
유니코드로 바꿔야 한다는데... 도통 잘 모르겠네요... ^^
유니코드로 통일시키시면 됩니다.
캐릭터셋 이나 UTF8 같은 키워드로 검색해보셔요