title: Using CursorLoader with LoaderManager to retrieve images from android apps
body: <p>At the moment I’m using getContentResolver().query()/managedQuery() to get a cursor to retrieve images from the gallery app. Because the APIs I’m using are partly deprecated I wanted to use CursorLoader with LoaderManager.</p>
  
  <pre><code>/**
   * Creates a cursor to access the content defined by the image uri for API
   * version 11 and newer.
   * 
   * @return The created cursor.
   */
  @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  private Cursor createCursorHoneycomb() {
      String[] projection = {
              MediaStore.Images.Media.DATA
      };
      Cursor cursor = getContentResolver().query(imageUri, projection, null, null, null);
  
      return cursor;
  }
  
  /**
   * Creates a cursor to access the content defined by the image uri from API
   * version 8 to 10.
   * 
   * @return The created cursor.
   */
  @SuppressWarnings("deprecation")
  @TargetApi(Build.VERSION_CODES.FROYO)
  private Cursor createCursorFroyo() {
      String[] projection = {
              MediaStore.Images.Media.DATA
      };
      Cursor cursor = managedQuery(imageUri, projection, null, null, null);
  
      return cursor;
  }
  </code></pre>
  
  <p>Since I don’t have a ListView I don’t use any adapter. I just set an image bitmap for an ImageView.</p>
  
  <pre><code>/**
   * Sets the image bitmap for the image view.
   */
  private void setupImageView() {
      String imagePath = getImagePathFromUri(imageUri);
      Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
      ImageView imageView = (ImageView) findViewById(R.id.image_view);
  
      imageView.setImageBitmap(bitmap);
  }
  
  /**
   * Returns an image path created from the supplied image uri.
   * 
   * @param imageUri The supplied image uri.
   * @return Returns the created image path.
   */
  @SuppressWarnings("deprecation")
  private String getImagePathFromUri(Uri imageUri) {
      Cursor cursor = null;
      String imagePath = null;
  
      if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.HONEYCOMB) {
          cursor = createCursorHoneycomb();
      } else {
          cursor = createCursorFroyo();
      }
  
      // if image is loaded from gallery
      if (cursor != null) {
          startManagingCursor(cursor);
  
          int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  
          cursor.moveToFirst();
          imagePath = cursor.getString(columnIndex);
      }
      // if image is loaded from file manager
      else {
          imagePath = imageUri.getPath();
      }
  
      return imagePath;
  }
  </code></pre>
  
  <p>Is it possible to use CursorLoader with LoaderManager to load images from the gallery app or a file manager? I cant’t find any solution.</p>