android – 将图像从相机存储到私有应用缓存目录

我想从相机捕获图像并将其保存到私有应用程序缓存目录.我意识到我必须给相机应用程序写入我的私人目录的权限,所以我添加了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());

谢谢
西蒙

解决方法

而不是传递Uri来存储图片你可以使用 http://developer.android.com/reference/android/hardware/Camera.html#takePicture(android.hardware.Camera.ShutterCallback,android.hardware.Camera.PictureCallback,android.hardware.Camera.PictureCallback)

获取应用程序内存中的内容.从那里你可以做任何你想做的事.

不要忘记相机应用程序也在使用图库,并且不允许图库应用程序检查您的私人目录.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...