java - 为什么 Camera Intent 不将图像返回给 ImageView?
问题描述
我想要实现的是在地图上长按它会调出自定义对话框视图,其中包含 3 个按钮,一个用于照片,一个用于保存,一个用于取消。
所以在点击照片的那一刻,相机意图打开,我可以拍照。单击“确定”后,意图返回到自定义对话窗口但不显示图像?
这是我目前正在使用的代码:
public void onMapLongClick(LatLng point) {
LayoutInflater factory = LayoutInflater.from(MainActivity.this);
final View deleteDialogView = factory.inflate(R.layout.custom_dialog, null);
final AlertDialog deleteDialog = new AlertDialog.Builder(MainActivity.this).create();
deleteDialog.setView(deleteDialogView);
deleteDialogView.findViewById(R.id.btn_photo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String f = System.currentTimeMillis()+".jpg"; // Designated name
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), f);
fileUri = FileProvider.getUriForFile(MainActivity.this, getPackageName() + ".fileprovider", file);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(cameraIntent, TAKE_PICTURE);
}
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
switch (requestCode) {
case TAKE_PICTURE:
ImageView imgView = findViewById(R.id.a);
imgView.setImageURI(fileUri);
break;
}
}
});
解决方案
请注意,您将“fileUri”传递给意图,因此您还需要从返回的意图中获取它。
尝试更换imgView.setImageURI(fileUri);
和imgView.setImageURI(data.getData());
或者
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
这将为您提供带有图像的 URI。
推荐阅读
- python - 这是一个链接。随机字符串 f6909.... 是如何生成的?
- javascript - 如何删除数组不同对象中的相似键
- python - 为什么我不断收到错误“min() arg is an empty sequence”?
- javascript - V-model 没有监听输入的值变化(vuejs)
- powershell - 使用 ExecutionPolicy ByPass 启动 powershell 脚本但无法正常工作
- powershell - 在 PowerShell 中使用正则表达式提取文本部分并输出到新文件
- angular-material - Angular Material Mat-video 字幕按钮未在任何浏览器上显示
- javascript - 通过单击按钮重置 json 文件
- php - 使用 JSON 原始数据请求正文逻辑
- bash - 有一个不应硬编码但应在规则调用时作为参数传递的参数