我想从相机捕获图像并将其保存到私有应用程序缓存目录.我意识到我必须给相机应用程序写入我的私人目录的权限,所以我添加了FLAG_GRANT_WRITE_URI_PERMISSION标志.
发生了什么,相机应用程序打开,我可以拍照,但当我点击确定按钮,没有任何反应.相机应用程序保持打开状态没有日志输出.我想这是因为许可问题.
private void getCameraImage() {
try {
mTmpFile = File.createTempFile("tmp",".jpg",getCacheDir());
Uri imgUri = Uri.fromFile(mTmpFile);
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT,imgUri);
i.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// i.setData(imgUri); // if uncommented,i get an ActivityNotFound Exception
startActivityForResult(i,REQUEST_CAMERA);
} catch (IOException e) {
Log.e(TAG,"getCameraImage()",e);
Toast.makeText(this,"Something went wrong",Toast.LENGTH_SHORT).show();
}
}
任何见解,我如何纠正?
编辑:
当我将目录更改为公共SD卡时,它工作正常.
mTmpFile = File.createTempFile("tmp",Environment.getExternalStorageDirectory());
谢谢
西蒙