2017-05-03 69 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