Android 8.0 读取内部和外部存储以及外置SDcard的方法
最近碰到询问我这个读取SDcard的问题,很久没有看这部分了,所以大致看了一下,顺便记录一下。在Android8.0上做了测试。
一般的AndroidApp能读取的存储空间主要有三种:
app自己的私有目录,也就是/data/data/《app目录》。
读写这个目录不需要单独的权限。每个app只能读写自己的目录,而不能读写其他app的目录。Android通过Seandroid对权限进行了管理。
/sdcard。
这个其实是Android手机的internalstorage。也就是一般你买手机的时候,说手机是64GB的存储空间,就是说的这个地方。这个地方的读写需要申请权限。READ_EXTERNAL_STORAGE是读,WRITE_EXTERNAL_STORAGE是写,有写的权限就自动有读的权限。这个权限是正对整个/sdcard,不区分子目录,也就是说一旦你申请权限你可以对整个/sdcard上的所有文件和目录有操作权限。这个权限的管理会显示再settings里相应的apppermission里。
外置sdcard
这个对应的是你放入手机sdcard插槽的microSD卡。有时候也叫removablestorage。Android里无法通过申请权限来获取读写的权利。这一点和上面说的2不同。因此,如果需要获取写权限,需要用户指定特定的目录单独授权。这里举个简单的例子。如果外置sdcard的路径是/mnt/extsdcard,然后上面有两个目录a和b,那么你可以让用户授权你写/mnt/extsdcard/a,但是你还需要让用户再单独授权你写/mnt/extsdcard/b,也就是要授权两次。具体的实现方法,就不多说了,google再github上给了个例子,其中的wiki页面有比较详细的描述。
特别要说明的是,由于这个没有对应的androidpermission,所以如果你得到授权以后,对应的目录路径不会显示再settings中的apppermission。相反,它会显示再appstorage里,用户可以在那里revoke对app的授权(同样,也是指定目录)。这个我感觉其实不好,因为这本质上也是权限问题,应该都放在apppermission里。
以上这篇Android8.0读取内部和外部存储以及外置SDcard的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。