检索相机意图图像全图uri

时间:2019-01-21 15:46:58

标签: android android-camera android-fileprovider

我已经找到了人们可以用来检索相机拍摄图像的uri /位图的方法。 但是,当我尝试从非null uri创建位图时,我得到的文件未创建且不存在。

这是我用来打开相机意图的功能(从stackoverflow复制而来):

private void openBackCamera() {
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    String imageFileName = timeStamp + ".jpg";
    File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
    currentImageBase64 = storageDir.getAbsolutePath() + "/" + imageFileName;
    File file = new File(currentImageBase64);
    Log.d("2","file 1: " +file.exists());
    Uri outputFileUri = FileProvider.getUriForFile(getApplicationContext(),"com.mydomain.fileprovider",file);
    currentImageBase64 =outputFileUri+"";
    Log.d("2",outputFileUri+" is the uri got from camera");
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    startActivityForResult(cameraIntent, CAMERA_REQUEST);
}

这就是我处理图像的方式:

            Log.d("2","camera request!"+ currentImageBase64);
            File imgFile = new  File(currentImageBase64);
            if(imgFile.exists()) {
                Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

                ivPreview.setImageBitmap(myBitmap);
            }else{
                Log.d("2","file does not exist");
            }

请注意,相机请求日志显示currentImagesBase64不为null,并且其值为“ content://com.mydomain.fileprovider/name/Pictures/20190121_173332.jpg” 该文件仍然不存在。

/ ** 编辑:问题是权限不足,请求了摄像头和读写权限,问题已解决! ** /

1 个答案:

答案 0 :(得分:0)

原来是权限问题,一旦我授予运行时摄像机读写存储权限,问题就解决了!