2011-09-27 4 views
1

코드를 실행할 때 @managedQuery 예외가 발생합니다. 뭐가 잘못 되었나요? 나는 그것을 보지 않는다.Nullpointer @ managedQuery

import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.MediaStore; 

public class FileManager extends Activity 
{ 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
    } 

public List<String> getAudioFiles() 
{ 
    List<String> songs = new ArrayList<String>(); 

    //Some audio may be explicitly marked as not being music 
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; 

    String[] projection = { 
      MediaStore.Audio.Media._ID, 
      MediaStore.Audio.Media.ARTIST, 
      MediaStore.Audio.Media.TITLE, 
      MediaStore.Audio.Media.DATA, 
      MediaStore.Audio.Media.DURATION 
    }; 

    Cursor cursor = managedQuery(
      MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
      projection, 
      null, 
      null, 
      MediaStore.Audio.Media._ID); 

    while(cursor.moveToNext()){ 
      songs.add(cursor.getString(0) + "||" + cursor.getString(1) + "||" + cursor.getString(2) + "||" + cursor.getString(3) + "||" + cursor.getString(4) + "||" + cursor.getString(5)); 
    } 

    return songs; 
} 

}

이 예외

09-27 17:04:20.130: ERROR/AndroidRuntime(4079): FATAL EXCEPTION: main 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.testActivity}: java.lang.NullPointerException 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.os.Looper.loop(Looper.java:130) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at java.lang.reflect.Method.invoke(Method.java:507) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at dalvik.system.NativeStart.main(Native Method) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079): Caused by: java.lang.NullPointerException 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.content.ContextWrapper.getContentResolver(ContextWrapper.java:90) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.Activity.managedQuery(Activity.java:1556) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at com.test.FileManager.getAudioFiles(FileManager.java:35) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at com.test.testActivity.onCreate(testActivity.java:21) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  ... 11 more 
+0

예외 사항도 게시하십시오. 또한 Android SDK API에 따라 managedQuery가 더 이상 사용되지 않습니다 (대신 CursorLoader를 사용해야 함). – Thor84no

+0

새 계정에서 이전 계정과 동일한 전자 메일을 사용하는 경우 계정을 병합하고이 질문의 소유권을 다시 제공 할 수 있습니다. 일단 질문이 있으시면 '기타'를 선택하고 병합을 요청하십시오. –

답변

0

이 도움이되지 않을 수 있습니다하지만 난 당신의 투사 다섯 길이의 배열 인 점에 유의하여 문자열 구축 방법은 여섯 번째를 기대 column (cursor.getString (5)). 물론 managedQuery에서 NullPointerException이 발생하지 않을 것입니다. 예외가 발생하는 곳이 확실합니까? 이 비트는 선택 기준을 정의하지만 사용하지 않는다는 점을 제외하고는 여기에서 괜찮아 보입니다.

관련 문제