您的位置:首页 > 移动开发 > Android开发

获取android应用缓存目录时遇到的问题

2016-09-22 15:18 483 查看
先说需求:调用系统相机拍照,将得到的图片上传到服务器,

问题1.

用context.getCacheDir()方法得到路径是/data/user/0/(项目包名)/cache,我在此目录通过file.createNewFile()方法创建成功,将此file传给系统相机Activity,当拍照结束时,发现resultCode=0(代表拍照取消).错误截图如下:

但是手机确实是有该文件的,截图如下:



猜想:可能是系统相机没有向/data/user/0/(项目包名)/cache/文件中写入数据的权限

问题2

然后换成了sd中的应用缓存目录:/storage/emulated/0/Android/data/(项目包名)/cache/

我实验了两种写法:

1.第一种可以直接写静态变量:

Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator+"Android"+ File.separator+"data"+File.separator+(项目包名)+File.separator +"cache"+File.separator + "send" + File.separator;


2.第二种是通过context对象创建:

context.getExternalCacheDir()+ File.separator + "send" + File.separator;


虽然两种写法的路径是一样的,但第一种属于通过app本身创建文件夹,仍然需要写入sd卡数据的权限

而第二种则是在调用context.getExternalCacheDir()时系统底层就会创建该目录,因此不需要权限

3. 总结

最终选择了通过context对象创建的方式

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  app缓存目录