2017-05-03 3 views
0

Ich habe etwas Code, der Bild von der Kamera erfassen und das Bild in der Gerätegalerie speichern. Nach der Methode onActivityResults erhalte ich die Bild-URL und kann das Bild in meiner Galerie auf dem Gerät sehen. aber ich kann dieses Bild aus irgendeinem Grund nicht nennen. Die URL-Zeichenfolge iam get ist /storage/emulate/0/Pictures/1493836160696.jpg. irgendeine Idee?kann Bild in Bildansicht nicht anzeigen

public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.cancel_btn: 
      finish(); 
      break; 
     case R.id.next_btn: 

      break; 
     case R.id.camera_btn: 
      Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
       String fileName = "temp.jpg"; 
       ContentValues values = new ContentValues(); 
       values.put(MediaStore.Images.Media.TITLE, fileName); 
       mCapturedImageURI = getContentResolver() 
         .insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
           values); 
       takePictureIntent 
         .putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
       startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
       break; 
      } 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
              Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case REQUEST_IMAGE_CAPTURE: 
      if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
       String[] projection = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = managedQuery(mCapturedImageURI, projection, null, null, null); 
       int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
       cursor.moveToFirst(); 
       String picturePath = cursor.getString(column_index_data); 


       Uri u = Uri.parse(picturePath); 
       Log.d("path", String.valueOf(u)); 
       //ALBUM_ART_URI = Uri.parse(String.valueOf(picturePath)); 
       Picasso.with(AddNewDish.this).load(u).into(mImageView); 

      } 
    } 
} 
+0

Haben Sie ein Fehlerprotokoll? – PYPL

+0

Welche Sdk-Version testen Sie? Für sdk> = 23 brauchst du Laufzeitberechtigungen ... – rafsanahmad007

Antwort

0

Ersetzen Sie den Code in das case mit:

case REQUEST_IMAGE_CAPTURE: 
     if (resultCode == RESULT_OK) { 
      Picasso.with(AddNewDish.this).load(mCapturedImageURI).into(mImageView); 
     } 

Außerdem müssen Sie sicherstellen, dass Sie mCapturedImageURI in der gespeicherten Instanz Zustand Bundle werden beibehalten, wie Ihr Prozess, während die Kamera beendet werden kann App ist im Vordergrund.

Siehe this sample app für die Verwendung ACTION_IMAGE_CAPTURE und die daraus resultierende Uri.

+0

Vielen Dank, funktioniert super – Elidotnet