2016-07-11 35 views
0

我想從SD卡獲取相片,並選擇圖像,但是當我從SD卡中選擇圖像,將在其他OS 5.1操作系統崩潰,這是工作的罰款從圖庫中捕獲或拍攝圖像在Android 5.1中給出空指針異常?

public String getImagePath(Uri uri) { 
     Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
     cursor.moveToFirst(); 
     String document_id = cursor.getString(0); 
     document_id = document_id.substring(document_id.lastIndexOf(":") + 1); 
     cursor.close(); 

     cursor = getContentResolver().query(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
       null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null); 
     cursor.moveToFirst(); 
     String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); 
     cursor.close(); 

     return path; 
    } 



// Error Coming in this line 
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); 
+0

您想獲得文件系統路徑的用途是什麼?你最好直接使用它的uri。 – greenapps

+0

如果你的應用程序崩潰,你應該開始找到原因。它將是一個空指針。 – greenapps

+0

我從畫廊任何地方選擇圖像目錄或SD卡 – Mahesh

回答

0

嘗試下面獲取路徑:

public String getImagePath(Uri uri) { 
    String[] projection = {MediaStore.Images.Media.DATA}; 
    Cursor cursor = getContentResolver().query(uri, 
      projection, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(projection[0]); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 
相關問題