2012-07-21 6 views
7

unter meinem Code ist, aber geben Sie mir Bildpfad in onActivity ErgebnisWie Bildpfad bekommen nur von der Kamera aufgenommenen

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

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

Antwort

40

Dies funktioniert für mich ...

Code:

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

Methode: 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:

Wie ich in einem Gerät bemerkt, nachdem aufgenommenes Bild der Daten in onActivityResult() sind null,

So ist die alternative Möglichkeit, übergeben Sie die spezifischen Bilddateinamen als Argument für Ihr Intent für Bild als putExtra Parameter erfassen.

Dann legt auch dieses Bild Uri in Media Store, nun diese Uri für Ihre weitere Nutzung verwenden,

können Sie prüfen, ob Bild aufgenommen wird oder nicht durch File.exist(),

-Code aussieht,

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

Jetzt können Sie die gleiche Methode für get Dateipfad von Uri verwenden,

in diesem Fall ist es insein,

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

eine große thanx Geck ...... sein perfekt mybro –

+4

außer zu arbeiten, wenn Sie ein Samsung verwenden. –

+0

@OvidiuLatcu - Ich habe es nicht auf Samsung getestet. Was ist das Problem in Samsung Gerät mit diesem Code? – user370305

Verwandte Themen