Android - 从我刚拍摄的图片中获取URI(不再保存图像)

pla*_*oom 3 android

对于像我这样的问题,我找到了很多答案但是对我来说没有意义.让我解释.

我有一个ImageButton,让用户拍照并在界面上显示它.当我尝试获取图像URI时,它返回null:

Uri uri = data.getData(); 
Run Code Online (Sandbox Code Playgroud)

我在互联网上进行了一些搜索,找到了类似的解决方案:

@Override
public void onActivityResult(int requestCode, int resultCode,
        Intent data) {
    try {
        if (resultCode == Activity.RESULT_OK) {
            updateProfilePicure = Boolean.TRUE;
            switch(requestCode){
                case 0:
                    Bundle extras = data.getExtras();
                    Object xx = data.getData();
                    Bitmap imageBitmap = (Bitmap) extras.get("data");
                    Uri tempUri = getImageUri(imageBitmap);
                    imageView.setImageBitmap(imageBitmap);
                    break;
                default: break;
            }
        }
    } catch(Exception e){
        e.printStackTrace();
    }
}

public Uri getImageUri(Bitmap inImage) {
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    String path = MediaStore.Images.Media.insertImage(
            ApplicationContext.getInstance().getContext().getContentResolver(), inImage,
   "Title", null);
    return Uri.parse(path);
}   
Run Code Online (Sandbox Code Playgroud)

对我来说,它没有意义,因为当调用转到方法onActivityResult()时,图片已经保存在DCIM文件夹中,并且没有任何理由再次保存它.那我为什么要用呢?

是否有可能找到另一种从捕获的图像中检索URI的方法?

提前致谢.

Com*_*are 5

图片已保存在DCIM文件夹中,没有任何理由再次保存.

不必要.引用文档ACTION_IMAGE_CAPTURE:

调用者可以传递额外的EXTRA_OUTPUT来控制该图像的写入位置.如果EXTRA_OUTPUT不存在,则在额外字段中返回小尺寸图像作为Bitmap对象.

(这里的"额外字段"是一个额外的键入data)

您粘贴的代码段正在检索data额外内容,因此图像不会存储在任何位置.

是否有可能找到另一种从捕获的图像中检索URI的方法?

您已经在第一个代码段中拥有了此代码 - 如果您在请求中指定了Urias ,则将返回到手中的图像.EXTRA_OUTPUTACTION_IMAGE_CAPTUREUriIntentonActivityResult()