2017-05-03 61 views
0

我有一些代碼從相機捕獲圖像並將圖像保存在設備庫中。在onActivityResults方法後,我得到圖像的網址,我可以在設備上看到我的畫廊上的圖像。但由於某種原因,我無法調用該圖像。 iam獲得的url字符串是/storage/emulated/0/Pictures/1493836160696.jpg。任何想法?無法在imageview中顯示捕獲圖像

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

你有沒有錯誤日誌? – PYPL

+0

你正在測試什麼Sdk版本?對於sdk> = 23,您需要運行權限... – rafsanahmad007

回答

0

替換你的代碼在case有:

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

另外,你需要確保你是在保存實例狀態Bundle保留mCapturedImageURI,因爲過程可能會當相機被終止應用程序在前臺。

有關如何使用ACTION_IMAGE_CAPTURE以及由此產生的Uri,請參閱this sample app

+0

非常感謝您,工作良好 – Elidotnet