Android4.4 访问外部存储详解及实例

所属分类: 软件编程 / Android 阅读数: 44
收藏 0 赞 0 分享

Android4.4  访问外部存储

在Android 4.4系统中,外置存储卡(SD卡)被称为二级外部存储设备(secondary storage),应用程序已无法往外置存储卡(SD卡)写入数据,并且WRITE_EXTERNAL_STORAGE只为设备上的主要外部存储(primary storage)授予写权限,对于其他外部存储,其上的文件属性都改为基于文件夹结构,应用无需获取WRITE_EXTERNAL_STORAGE权限,但可以管理与自己包名相关的文件夹。举例来说,如果应用的包名是com.example.externalstorage,那么外部存储上的Android/data/com.example.externalstorage/文件夹就是它的了,可随意访问,无需权限。另外需要特别注意的是,应用卸载的时候,在SD卡上创建的相应文件夹、数据都会被同时完全删除。

例外,在Android 4.4里,系统应用(指有platform签名,或预装在/system/priv-app目录下的应用)可以通过使用WRITE_MEDIA_STORAGE权限获取完全读写SD卡的权限。

Android 4.4增加了下面的函数访问外部存储:

 Context.getExternalFilesDirs(null), 返回多个sd卡的该应用私有数据区的files目录

/storage/sdcard0/Android/data/<包名>/files

/storage/sdcard1/Android/data/<包名>/files

Context.getExternalCacheDirs(), 返回多个sd卡下该应用私有数据库的缓存目录

/storage/sdcard0/Android/data/<包名>/caches

/storage/sdcard1/Android/data/<包名>/caches

Context.getObbDirs(), 返回多个sd卡下obb目录下的私有数据(该目录一般是游戏的数据包目录)

/storage/sdcard0/Android/obb/<包名>

/storage/sdcard1/Android/obb/<包名>

通过上面的函数在我的Android 5.1的系统上可以正确获取sd卡路径,但是在Android4.4系统上只能看到内部存储的路径。

 
   
 

根据网上的资料,Android 4.4以后可以通过修改系统文件来管理sd卡,方法如下:

1<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
2     <group gid="sdcard_r" />
3     <group gid="sdcard_rw" />
4     <group gid="media_rw" />
5   </permission>

修改/system/etc/permissions/platform.xml文件的android.permission.WRITE_EXTERNAL_STORAGE节点,增加<group gid="media_rw" />(需要root权限)。

修改完后应用就可以随意控制sd卡了。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多精彩内容其他人还在看

Retrofit2日志拦截器的使用

这篇文章主要介绍了Retrofit2日志拦截器的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android创建外部lib库及自定义View的图文教程

这篇文章主要给大家介绍了关于Android创建外部lib库及自定义View的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android分享微信小程序失败的一些事小结

这篇文章主要给大家介绍了关于Android分享微信小程序失败一些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android分享微信小程序技巧之图片优化

这篇文章主要给大家介绍了关于Android分享微信小程序技巧之图片优化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android Viewpager实现无限循环轮播图

这篇文章主要为大家详细介绍了Android Viewpager实现无限循环轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中的Bitmap序列化失败的解决方法

这篇文章主要介绍了Android中的Bitmap序列化失败的解决方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Android自定义通用标题栏CustomTitleBar

这篇文章主要为大家详细介绍了Android自定义通用标题栏CustomTitleBar,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android组合控件自定义标题栏

这篇文章主要为大家详细介绍了Android组合控件自定义标题栏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义复合控件实现通用标题栏

这篇文章主要为大家详细介绍了Android自定义复合控件实现通用标题栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

ExpandableListView实现简单二级列表

这篇文章主要为大家详细介绍了ExpandableListView实现简单二级列表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多