android 文件存储6.0,android存储方案,兼容6.0以上

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

android的存储本来没啥好说的。但在6.0上由于有了权限申请这个环节,以前随意在SD卡上建目录的方式,要注意才行了。

android api提供给应用存储的路径就有两个,6.0以上应该尽量使用它们。这两个目录是不需要申请权限的,甚至在xml中都不需要配置。只是为了兼容之前的版本,我们仍然需要写上

私有目录,沙盒。非root过的手机,是看不见里面内容的。public static String getAppFilesPath() {

return appContext.getFilesDir().getAbsolutePath();

}

public static String getAppCachePath() {

return appContext.getCacheDir().getAbsolutePath();

}

这个目录是肯定会存在的,通过Context直接获取。使用手机内部存储,不能放太大的东西。另外需要注意,这里的文件是只有自身应用能够读取的。比如一个pdf,想要调用wps打开,传这里的路径是不行的。一些分享sdk,也要求在分享图片时候,不能将图片放在私有目录下。

应用外部存储的目录public static boolean isAppExtOk() {

if (isCanUseSD()) {

return true;

}

return false;

}

public static String getAppExtFilesPath() {

String path = appContext.getExternalFilesDir(null).getAbsolutePath();

if (path != null) {

//确保该路径是存在的

//6.0以上是肯定会存在的。之前可能该路径未创建,需要手动创建

makeDirs(path);

}

return path;

}

public static String getAppExtCachePath() {

String path = appContext.getExternalCacheDir().getAbsolutePath();

if (path != null) {

makeDirs(path);

}

return path;

}

外部存储目录,其实现在的手机绝对是有的,不然还生产来干嘛。但是保险的话,仍然是增加了一句判断。这里的文件存储在SD卡上,都可以访问。

SD自定义的存储目录public static String getExtRootPath() {

if (ContextCompat.checkSelfPermission(appContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {

if (rootPath == null) {

rootPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + rootFolder;

makeDirs(rootPath);

}

}

return rootPath;

}

这里的重点就是需要提前申请读写权限,然后才能使用。一般情况下,其实没有必要再去维护这样一个目录。直接使用AppExt的路径不是挺好的嘛,还不需要去申请权限。

相关的方法,封装成了一个简单的FileUtils。所有代码都可以在https://github.com/lonaever/MyApp找到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值