【发布时间】:2012-11-15 23:12:33
【问题描述】:
我想从相机中捕获图像并将其保存到私有应用缓存目录。我意识到我必须授予相机应用写入我的私人目录的权限,所以我添加了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", ".jpg", Environment.getExternalStorageDirectory());
谢谢 西蒙
【问题讨论】:
-
如果是权限问题,LogCat 中会出现错误。
-
不确定。即使我删除了 FLAG_GRANT_WRITE_URI_PERMISSION 标志,我也没有得到任何日志输出。也许相机应用程序会检查权限,如果无法写入文件,则会中止操作。
标签: android permissions camera