Questo funziona per me ...
Codice:
Uri selectedImageUri = data.getData();
selectedImagePath = getRealPathFromURI(selectedImageUri);
Metodo: getRealPathFromURI()
//----------------------------------------
/**
* This method is used to get real path of file from from uri
*
* @param contentUri
* @return String
*/
//----------------------------------------
public String getRealPathFromURI(Uri contentUri)
{
try
{
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
catch (Exception e)
{
return contentUri.getPath();
}
}
EDIT:
Come ho notato in qualche dispositivo dopo l'immagine catturata i dati in onActivityResult()
è nulla,
Quindi il modo alternativo, passare il nome del file immagine specifica come un argomento per il vostro intento per cattura l'immagine come parametro putExtra
.
Quindi inserire anche questa immagine Uri in Media Store, ora utilizzare questo Uri per l'ulteriore uso,
È possibile verificare se l'immagine viene catturata o meno da File.exist()
,
Codice assomiglia,
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "Image File name");
Uri mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intentPicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intentPicture.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
startActivityForResult(intentPicture,ACTION_TAKE_PICTURE);
Ora, è possibile utilizzare lo stesso metodo per il percorso del file ottenere da Uri,
in questo caso sarà in onActivityResult()
,
selectedImagePath = getRealPathFromURI(mCapturedImageURI); // don't use data.getData() as it return null in some device instead use mCapturedImageUR uri variable statically in your code,
un enorme thanx tizio ...... la sua perfetta efficienza mybro –
tranne se si utilizza un Samsung. –
@OvidiuLatcu - Non l'ho provato su Samsung. Qual è il problema nel dispositivo Samsung che utilizza questo codice? – user370305