2012-07-21 8 views
7

a continuación es mi código, pero no se me dan ruta de la imagen en consecuencia onActivityComo llegar Ruta imagen recién capturada desde la cámara

Uri selectedImageUri = data.getData(); 
       selectedImagePath = getPath(selectedImageUri); 
       Log.w("jay", "Camera Image Path :" + selectedImagePath); 

       Toast.makeText(MiscansOther_pannel.this, selectedImagePath, 
         Toast.LENGTH_LONG).show(); 

Respuesta

40

Esto funciona para mí ...

Código:

Uri selectedImageUri = data.getData(); 
selectedImagePath = getRealPathFromURI(selectedImageUri); 

Método: 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:

Como he notado en algún dispositivo tras capturar la imagen de los datos en onActivityResult() es nula,

Así que la forma alternativa, pasar el nombre de archivo de imagen específica como un argumento a su intención de capturar imagen como parámetro putExtra.

Entonces también insertar esta imagen Uri en Media Store, ahora utilizar este URI para su uso posterior,

Puede comprobar si la imagen es capturada o no por File.exist(),

Código parece,

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

Ahora, puede utilizar el mismo método para la ruta del archivo de obtener de Uri,

en este caso será en 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, 
+1

un gran tio ...... Gracias a su perfecto estado de funcionamiento mybro –

+4

excepto si está utilizando un Samsung. –

+0

@OvidiuLatcu - No lo probé en Samsung. ¿Cuál es el problema en el dispositivo Samsung que usa este código? – user370305

Cuestiones relacionadas