uri 那部分在安卓7以后有权限风险,不能通过。用fileprovider 后,相机2拍照后显示图片报错找不到文件或文件夹W/System.err: java.io.FileNotFoundException: /storage/emulated/0/temp.jpg: open failed: ENOENT (No such file or directory)

来源:3-1 Android自定义相机之定义一个Camera

慕粉9399637

2020-05-06 11:18

    public void startCamera2(View view){
        Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//        Uri photoUri = Uri.fromFile(new File(mFilePath));//显示的路径有权限风险
        photoUri = FileProvider.getUriForFile(
                this,
                getPackageName() + ".provider",
                new File(mFilePath));
        intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri); //更改照片存储路径到photoUri
        startActivityForResult(intent,REQ_2);   //打开相机拍照,返回相机结果(照片)并回到原界面
    }
    //onActivityResult部分代码
    else if(requestCode == REQ_2){
                FileInputStream fis = null;
                try {
                    fis = new FileInputStream(new File(mFilePath));
                    Bitmap bitmap = BitmapFactory.decodeStream(fis);  //涉及写入内存卡权限,在manifest里面配置

//                    Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(photoUri));
                    mImageView.setImageBitmap(bitmap);           //从内存读取原图


写回答 关注

1回答

  • 慕梦前来
    2022-03-16 18:08:47

    是手机系统版本的问题,手机旧的不行

Android摄像头基础

带你走进Android摄像头的秘密花园,探索Camera的奥秘

44961 学习 · 136 问题

查看课程

相似问题