2015-08-03 69 views
1

通過使用下面的代碼,我得到4.4.4中的圖像路徑,但是當我在棒棒糖5.0.1中使用它時,它不起作用。如何獲取Android中的圖庫圖像路徑?

String[] proj = { 
       MediaStore.Images.Thumbnails._ID, 
       MediaStore.Images.Thumbnails.DATA, 
     }; 

     CursorLoader cursorLoader = new CursorLoader(
     this, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj, null, null, null);   

     Cursor imageCursor = cursorLoader.loadInBackground(); 
+0

檢查這個答案。 http://stackoverflow.com/questions/14424624/using-cursorloader-with-loadermanager-to-retrieve-images-from-android-apps –

+0

請記住,沒有要求'MediaStore'給你一個路徑文件,您可以使用。畢竟,該文件可能位於[可移動存儲](https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html)上,您無法在Android 4.4及更高版本上訪問該文件。 – CommonsWare

回答

0

當需要時通過調用getSupportLoaderManager啓動加載器管理器。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_CODE) { 
     if (resultCode == Activity.RESULT_OK) { 
      imageUri = data.getData(); 
      getSupportLoaderManager().initLoader(0, null, this); 
     } else if (resultCode == Activity.RESULT_CANCELED) { 
      Toast.makeText(this, "Action canceled.", Toast.LENGTH_LONG).show(); 
     } else { 
      Toast.makeText(this, "Action failed!", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

然後創建一個用於檢索圖像路徑的光標加載器。

@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    String[] projection = { 
      MediaStore.Images.Media.DATA 
    }; 
    CursorLoader cursorLoader = new CursorLoader(this, imageUri, projection, null, null, null); 

    return cursorLoader; 
} 

當遊標加載器結束時,它使用檢索到的數據更新UI。

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    if (data != null) { 
     int columnIndex = data.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 

     data.moveToFirst(); 
     imagePath = data.getString(columnIndex); 
    } else { 
     imagePath = imageUri.getPath(); 
    } 

    setupImageView(); 
} 
+0

如何開始一個活動的結果?? [鏈接](http://stackoverflow.com/questions/10407159/how-to-manage-start-activity-for-result-on-android) –