2016-07-11 25 views
0

Ich mag Foto aufzunehmen und wählen Sie das Bild aus sdcard, aber wenn ich Bild bin die Auswahl von sdcard wird es in 5,1 os in anderen os Absturz ist es in OrdnungCapture oder Take Image aus der Galerie gibt Null Zeiger Ausnahme in 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

Für welchen Zweck möchten Sie einen Dateisystempfad erhalten? Sie verwenden besser die URI direkt dafür. – greenapps

+0

Wenn Ihre App abstürzt, sollten Sie nach dem Grund suchen. Es wird ein Nullzeiger sein. – greenapps

+0

Ich wähle Bild aus der Galerie, wo entweder Verzeichnis oder SD-Karte – Mahesh

Antwort

0

unter Versuchen Arbeitspfad zu holen:

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); 
}