获取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.第一种可以直接写静态变量:
2.第二种是通过context对象创建:
虽然两种写法的路径是一样的,但第一种属于通过app本身创建文件夹,仍然需要写入sd卡数据的权限
而第二种则是在调用context.getExternalCacheDir()时系统底层就会创建该目录,因此不需要权限
3. 总结
最终选择了通过context对象创建的方式
问题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对象创建的方式
相关文章推荐
- 获取Android应用专属缓存存储目录
- 获取Android应用专属缓存存储目录的实例
- Android开发获取程序缓存目录的方法
- ADT版本号超过17后,所遇到的问题,如导入项目没有Android Dependencies目录、jars包导入的解决办法
- 设计模式-单例模式(Singleton)在Android中的应用场景和实际使用遇到的问题
- Android开发系统工具类SysUtils:获取App版本号、SD卡目录、缓存目录、是否后台运行、前台可见
- Android中缓存目录问题及缓存的过程
- Android发短信的应用—新手遇到的最常见问题
- Android应用插件化开发中自定义View基础插件遇到的问题
- Eclipse开发Android应用时遇到的问题以及解决方法
- appium实践问题记录--如何获取android中应用的activity名称
- 缓存List到Cache目录,遇到的问题与解决
- Android 4.2 获取应用缓存接口变化
- android -应用软件获取缓存大小和清除缓存功能
- 2010reys.com遇到的问题 reader关闭问题 刷新页面有的内容被遮盖 ckeditor获取根目录问题
- ADT版本号超过17后,所遇到的问题,如导入项目没有Android Dependencies目录、jars包导入的解决办法
- 开发Android应用的时候遇到的问题
- Ant 多渠道 多项目应用library 打包Android项目遇到问题总结
- android获取文件的md5值遇到的问题
- 【Android学习】真机获取SD卡遇到的问题