仅在 Pixel_Api_26 模拟器中从相机拍摄照片后,无法在 ImageView 中放置图像
Posted
技术标签:
【中文标题】仅在 Pixel_Api_26 模拟器中从相机拍摄照片后,无法在 ImageView 中放置图像【英文标题】:Not able to place a image in ImageView After taking a pic from camera only in Pixel_Api_26 emulator 【发布时间】:2018-04-20 17:17:27 【问题描述】:我正在尝试从我的应用程序中的 cam 拍摄照片,但它工作正常但无法在 imageview 中显示它会引发错误..
请帮帮我
我的代码是
在解码 bitmapUri 时出错(我在代码中提到过)
错误是:
private void onCaptureImageResult(Intent 数据)
Log.w("CAM","capture image result");
launchMediaScanIntent();
try
File photo = new File(Environment.getExternalStorageDirectory(), "picture.jpg");
Log.w("CAM","decoding bitmap uri");
Context context=FSE_login.this;
Bitmap bitmap = decodeBitmapUri(this, FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".lerainfotech.tezmoney.FSE_login", photo));
Log.w("CAM","decoded");
attendance_pic = Utils.getResizedBitmap(bitmap);
Log.w("CAM","attached");
attendance_pic_field.setImageBitmap(attendance_pic);
catch (Exception e)
Log.w("Error Is",e);
Utils.showErrorDialog(getApplicationContext(), "Couldn't load image");
return;
【问题讨论】:
我的错误是:java.io.FileNotFoundException:打开失败:在 android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:313) 在 android.os.ParcelFileDescriptor 的 ENOENT(没有这样的文件或目录) .open(ParcelFileDescriptor.java:211) 在 android.support.v4.content.FileProvider.openFile(FileProvider.java:544) 在 android.content.ContentProvider.openAssetFile(ContentProvider.java:1538 【参考方案1】:首先你需要在 Mainifest 中编写以下代码
<uses-permission-sdk-23 android:name="android.permission.CAMERA" />
<uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
你的活动应该是这样的
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(this, new String[] Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE , 0);
else
captureImage();
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
if (requestCode == 0)
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED)
captureImage();
private void captureImage()
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File photo = new File(Environment.getExternalStorageDirectory(), "picture.jpg");
imageUri = Uri.fromFile(photo);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, REQUEST_CAMERA);
【讨论】:
它给出了这个错误兄弟:android.os.FileUriExposedException: file:///storage/emulated/0/picture.jpg 通过 ClipData.Item.getUri() 暴露在应用之外 @PrasanthYejje 这只是因为你的目标是 24 或更高的 api 级别试试这个链接***.com/questions/38200282/…以上是关于仅在 Pixel_Api_26 模拟器中从相机拍摄照片后,无法在 ImageView 中放置图像的主要内容,如果未能解决你的问题,请参考以下文章
Error while waiting for device: The emulator process for AVD Pixel_API_30 has terminated.
在棒棒糖中通过相机拍摄照片后,在 onActivityResult() 方法中获取空意图
在flutter中从image_picker包中打开相机会导致真实设备上的应用程序崩溃,但在模拟器(android)中运行良好