마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

파일 삭제 후 미디어 스캔 질문

0 추천
// 파일 삭제 후 미디어  스캔
     private boolean deleteFromMediaScanner(String filePath) {
        Uri fileUri = Uri.parse(filePath);
        filePath = fileUri.getPath();

        Cursor c = getContentResolver().query(
                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, "_data='" + filePath + "'", null, null);
        c.moveToNext();
        int id = c.getInt(0);
        Uri uri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);

        return getContentResolver().delete(uri, null, null) == 1;
    }

 

09-09 10:37:20.259: E/java.lang.Thread(18133): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.database.CursorWrapper.getInt(CursorWrapper.java:102)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at com.samsiki.camera.ImageEdditer.deleteFromMediaScanner(ImageEdditer.java:383)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at com.samsiki.camera.ImageEdditer.access$3(ImageEdditer.java:375)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at com.samsiki.camera.ImageEdditer$1.onClick(ImageEdditer.java:120)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.view.View.performClick(View.java:4630)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.view.View$PerformClick.run(View.java:19339)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.os.Handler.handleCallback(Handler.java:733)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.os.Handler.dispatchMessage(Handler.java:95)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.os.Looper.loop(Looper.java:157)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at android.app.ActivityThread.main(ActivityThread.java:5335)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at java.lang.reflect.Method.invokeNative(Native Method)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at java.lang.reflect.Method.invoke(Method.java:515)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
09-09 10:37:20.259: E/java.lang.Thread(18133):     at dalvik.system.NativeStart.main(Native Method)

 

어디가 문제인지 모르겠습니다.
익명사용자 님이 2015년 9월 9일 질문

1개의 답변

0 추천

c.getCount() 로 개수가 1개 이상인지 확인 해 보세요.

 0개인데, c.getInt(0); 로 첫번째 인덱스를 구하려 해서 

CursorIndexOutOfBoundsException 이 발생했습니다.

ex)

c.moveToNext();

if(c.getCount()  == 0)

   return;

  int id = c.getInt(0);

익명사용자 님이 2015년 9월 9일 답변
...