title: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference
body: <p>I'm creating an app that list all images in my phone and I'm using media content provider to do it.
   my problem is I always get this error in my app wherever i run it.</p>
  
  <pre><code>08-28 00:31:27.001 16706-16706/com.chill.leoj.burp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                   Process: com.chill.leoj.burp, PID: 16706
                                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chill.leoj.burp/com.chill.leoj.burp.Photos}: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601)
                                                                       at android.app.ActivityThread.access$800(ActivityThread.java:178)
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                       at android.os.Looper.loop(Looper.java:194)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5637)
                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                       at java.lang.reflect.Method.invoke(Method.java:372)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
                                                                    Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference
                                                                       at com.chill.leoj.burp.Photos.onCreate(Photos.java:159)
                                                                       at android.app.Activity.performCreate(Activity.java:6100)
                                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601) 
                                                                       at android.app.ActivityThread.access$800(ActivityThread.java:178) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                       at android.os.Looper.loop(Looper.java:194) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5637) 
                                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                                       at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
  </code></pre>
  
  <p>Photos.java:159</p>
  
  <pre><code>  if (thumbCursor.moveToFirst()) {
                  newVVI.thumbPath = thumbCursor.getString(thumbCursor
                          .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                  Log.v("", newVVI.thumbPath);
              }
  </code></pre>
  
  <p>pls can you help me to solve this. Thank you in advance!</p>
  
  <p>this is my code:</p>
  
  <pre><code>  Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
  
      Uri uri1 = MediaStore.Images.Thumbnails.getContentUri("external");
  
      String[] thumbColumns = { MediaStore.Images.Thumbnails.DATA,
              MediaStore.Images.Thumbnails.IMAGE_ID };
  
      String[] mediaColumns = { MediaStore.Images.Media._ID,
              MediaStore.Video.Media.DATA, MediaStore.Images.Media.TITLE,
              MediaStore.Images.Media.MIME_TYPE };
  
  
  Cursor cursor = getContentResolver().query(uri,
          mediaColumns, null, null, null);
  
  
  
      if (cursor.moveToFirst()) {
          do {
  
              ImageViewInfo newVVI = new ImageViewInfo();
              int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Media._ID));
              Cursor thumbCursor = getContentResolver().query(uri1, thumbColumns, MediaStore.Images.Thumbnails.IMAGE_ID
                      + "=" + id, null, null);
              if (thumbCursor.moveToFirst()) {
                  newVVI.thumbPath = thumbCursor.getString(thumbCursor
                          .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                  Log.v("", newVVI.thumbPath);
              }
  
              newVVI.filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
              newVVI.title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.TITLE));
              Log.v("", newVVI.title);
              newVVI.mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.MIME_TYPE));
              Log.v("", newVVI.mimeType);
              ImageRows.add(newVVI);
          } while (cursor.moveToNext());
  
  
          cursor.close();
          ImageAdapter = new ImageGalleryAdapter(Photos.this, ImageRows);
  
      }
      listView.setAdapter(new ImageGalleryAdapter(this, ImageRows));
  </code></pre>
  
  <p>Edit:
  I forgot to tell I also try what is written on <a href="https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it">this link</a> and debug it by myself but nothing really happens and i dont know if I'm doing it right.</p>