Android内置存储和sdcard存储(路径)详解

内置存储(external storage,/data/data下)

  • context.getCacheDir().getPath()   //路径为data/user/0/{packageName}/cache,不需要权限
  • context.getFilesDir().getPath() //路径为data/user/0/{packageName}/files,不需要权限
  • context.getDir("myDir", MODE_PRIVATE).getPath() //路径为data/user/0/{packageName}/app_myDir,这里的myDir是自定义写的,不需要权限

扩展存储(internal storage,/sdcard/Android/data下)

  • context.getObbDir().getPath() //storage/emulated/0/Android/obb/{packageName}  不需要权限
  • context.getExternalCacheDir().getPath() //storage/emulated/0/Android/data/{packageName}/cache   不需要权限
  • context.getExternalFilesDir(null).getPath() //storage/emulated/0/Android/data/{packageName}/files   不需要权限

公共存储区(sdcard下,相当于手机usb连接电脑显示的目录)

  • Environment.getExternalStorageDirectory().getPath()  //storage/emulated/0

用来读写时需要以下读写权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

这个方法在Android10(API 29)废弃,存储相关用context.getExternalFilesDir(null).getPath() 代替,此方法返回的路径是storage/emulated/0/Android/data/{packageName}/files,不需要权限,存储在sdcard对应应用下,这样更合理。如果仍然需要使用Environment.getExternalStorageDirectory().getPath()来获取storage/emulated/0 目录,则可以在AndroidManifest.xml中的application节点中加上android:requestLegacyExternalStorage="true"属性即可。

相关延伸

6.0权限申请相关:

https://blog.csdn.net/DarkfallYou/article/details/100010670

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值