关于谷歌原生外部存储访问写文件的SAF实现类
在Android系统中,由于安全性和隐私考虑,对应用访问外部存储(SD卡)的权限进行了严格的控制。在Android 6.0(API级别23)及以上版本,谷歌引入了"运行时权限"机制,应用程序不再默认拥有外部存储的读写权限,而是需要在运行时动态请求。本压缩包提供的“关于谷歌原生外部存储访问写文件的SAF实现类”旨在解决这个问题,让app能够合法地获取外部存储卡的写权限,并实现多种文件操作功能。 SAF(Storage Access Framework,存储访问框架)是Android提供的一种接口,它允许应用通过用户界面安全地访问不同来源的文件,包括外部存储。SAF通过Intent和ContentProvider来操作文件,为用户提供统一的文件选择和管理体验。在SAF中,应用不再直接与文件路径交互,而是通过URI来访问文件,这提高了文件操作的安全性。 要使用SAF实现外部存储写权限,你需要遵循以下步骤: 1. **请求权限**:在AndroidManifest.xml中声明`WRITE_EXTERNAL_STORAGE`权限,并在运行时通过`ActivityCompat.requestPermissions()`方法请求用户授权。 2. **构建意图**:创建一个`ACTION_OPEN_DOCUMENT_TREE`意图,用于启动系统文件选择器,让用户选择一个文件夹作为你的app的根目录。 3. **处理结果**:在`onActivityResult()`方法中接收用户选择的文件夹URI,通过`grantUriPermission()`方法将权限授予应用。 4. **文件操作**:使用`ContentResolver`和`DocumentsContract`类提供的方法进行文件操作,如创建文件、删除、重命名、复制和剪切。例如,你可以使用`DocumentsContract.createDocument()`创建新文件,`DocumentsContract.delete()`删除文件,`DocumentsContract.renameDocument()`重命名文件,以及`DocumentsContract.moveDocument()`移动文件。 5. **持久化访问**:为了在应用重启后仍然能访问选定的文件夹,你需要在`SharedPreferences`或数据库中保存用户选择的URI,并在应用启动时重新请求访问权限。 6. **释放权限**:当不再需要访问特定文件夹时,应调用`ContentResolver.releasePersistableUriPermission()`释放之前获取的持久化权限。 这个压缩包中的实现类可能已经封装了上述步骤,提供了一个简单的接口供开发者调用,以便更方便地进行外部存储的文件操作。使用此类,开发者可以专注于业务逻辑,而不必关心底层的SAF操作细节。 通过这个实现类,开发者可以避免因权限问题导致的文件操作异常,同时确保用户的文件安全,符合最新的Android权限管理规范。在实际开发中,结合SAF和动态权限管理,能够使你的应用更加合规且用户友好。
- 1
- u0106305112021-12-30学晧,资源有点贵呀
- 柴华松2019-10-23学晧,资源有点贵呀snail2012112020-01-08华松大神呀~~
- 粉丝: 10
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring MVC和Hibernate框架的学校管理系统.zip
- (源码)基于TensorFlow 2.3的高光谱水果糖度分析系统.zip
- (源码)基于Python框架库的知识库管理系统.zip
- (源码)基于C++的日志管理系统.zip
- (源码)基于Arduino和OpenFrameworks的植物音乐感应系统.zip
- (源码)基于Spring Boot和Spring Security的博客管理系统.zip
- (源码)基于ODBC和C语言的数据库管理系统.zip
- (源码)基于Spring Boot和Vue的Jshop商城系统.zip
- (源码)基于C++的学生信息管理系统.zip
- (源码)基于Arduino的实时心电图监测系统.zip