qui ottengo uri dall'alto onActivityResult()
Uri selectedImageURI = data.getData();
String realPath = getRealPathFromURI(selectedImageURI);
1) In frammento è possibile utilizzare la funzione in questo modo ..
private String getRealPathFromURI(Uri contentURI) {
String filePath;
Cursor cursor = getActivity().getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) {
filePath = contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
filePath = cursor.getString(idx);
cursor.close();
}
return filePath;
}
2) E l'attività è possibile utilizzare una funzione del genere.
private String getRealPathFromURI(Uri contentURI) {
String filePath;
Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) {
filePath = contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
filePath = cursor.getString(idx);
cursor.close();
}
return filePath;
}
fonte
2017-10-12 11:26:33
come funziona su tutte le versioni di Android quando 'DocumentsContract' stesso è disponibile solo dal livello API 19 KitKat? https://developer.android.com/reference/android/provider/DocumentsContract.html –
Utilizzare questo codice, quindi si verrà a sapere che funziona in tutti i dispositivi e ci sono condizioni in base ai livelli API. –
dovrebbe aver menzionato la risposta originale: http://stackoverflow.com/a/27271131/1567541 –