android saf 打开指定目录,并操作相关文件
android saf 打开指定目录,并操作相关文件
saf存储访问框架(android 4.4 引入)全称 Storage Access Framework
用户可轻松在其所有首选文档存储提供程序中浏览并打开文档、图像及其他文件。
用户可通过易用的标准界面,以统一方式在所有应用和提供程序中浏览文件,以及访问最近使用的文件。
我们可以通过ACTION_OPEN_DOCUMENT或ACTION_OPEN_DOCUMENT_TREE来选择文件或文件夹,获得对应的URI(在Android系统中的地址)
通过URI与DocumentFile工具类来进行添加、编辑、保存和删除的操作
打开指定目录文件有两种方式
第一种使用(要求api level 19) ACTION_OPEN_DOCUMENT
使用方法:选择文件 (ACTION_CREATE_DOCUMENT 创建文件)Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);intent.addCategory(Intent.CATEGORY_OPENABLE);//必须intent.setType("*/*");//必须intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);startActivityForResult(intent, WRITE_REQUEST_CODE);其中 uri:Uri uri = Uri.parse("content://com.android.externalstorage.documents/document/primary:test");固定格式:content://com.android.externalstorage.documents/document/primary:test 代表下面的test 文件夹,当然如果再想得到下一级文件夹还需要:既 :test:child
第二种方法(要求api level 21)ACTION_OPEN_DOCUMENT_TREE
使用方法:选择文件夹Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);//intent.putExtra("android.content.extra.SHOW_ADVANCED", true);intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);startActivityForResult(intent, WRITE_REQUEST_CODE);其中uri 和第一种一样
操作返回的文件夹命令(使用第二种方法)
借助 implementation "androidx.documentfile:documentfile:1.0.1"
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (data == null || resultCode != Activity.RESULT_OK) return;if (requestCode == WRITE_REQUEST_CODE) {DocumentFile child = DocumentFile.fromTreeUri(this, data.getData()).createDirectory("child").createFile("text/plain", "text.txt");Uri uri = child.getUri();try {getContentResolver().openOutputStream(uri).write("成功".getBytes());} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
android saf 打开指定目录,并操作相关文件相关推荐
- C# 打开指定目录并定位到文件
1. 打开文件夹: System.Diagnostics.Process.Start(FilePath); 打开文件夹中某个文件: System.Diagnostics.Process.Start(F ...
- 【文件IO】Linux 文件操作(一) —— 遍历指定目录下的所有文件
目录 一.访问目录相关函数 1.打开/访问目录 (opendir / fdopendir) 2.读取目录内容 (readdir) 3.关闭目录 (closedir) 二.遍历指定目录下的所有文件 一. ...
- Windows小技巧 -- 命令行窗口打开指定目录的资源管理器
文章目录 方法一 explorer 命令快速打开指定目录的资源管理器 方法二 start 命令快速打开指定目录的资源管理器 start 命令小记 打开系统应用 打开新的命令行窗口 打开命令行窗口并执行 ...
- Python调Windows的资源管理器打开指定目录
2019独角兽企业重金招聘Python工程师标准>>> 使用Python在Windows自定义命令时候遇到一个问题,调用Windows文件选择器打开指定文件目录. 这里介绍两种方式: ...
- python报表自动化系列 - 在Windows中打开指定目录
python在Windows系统中打开指定目录(文件夹) 李俊才 邮箱:291148484@163.com [函数说明] 该函数可以在windows系统中打开指定的文件夹,参数path应为字符串形式表 ...
- Mac用命令行在访达中打开指定目录
1. 在命令中打开指定目录 open /Users/用户名/git 2. 在命令中打开当前目录 open `pwd`
- 【 Linux 】图形化界面打开指定目录
nautilus Ubuntu提供了nautilus命令可以用来直接以资源管理器的方式打开指定目录: # nautilus $pwd # 图形化界面打开指定目录# 打开 opt 目录 nautilus ...
- Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)
Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩) ...
- php中如何判断目录是否存在文件_PHP判断指定目录下是否存在文件
这篇文章介绍的内容是关于PHP判断指定目录下是否存在文件 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下/* 功能:判断某个目录下是否存在文件: 参数:$path -- 要进行判断的目 ...
最新文章
- PDF 补丁丁 0.5.0.2078 测试版发布:不用打字,也能加书签
- java validation_java bean validation 参数验证
- ubuntu16.04x下搜狗输入法无法输入中文
- AI创想秀,邂逅“华为云ModelArts”征文大赛——第一次收官
- Oracle如何监控表的DML次数
- ad19pcb所有元件都在报错_PLC的线圈输出和置复位,可以混用吗?很多人都会犯这个错误!...
- 点云数据显示_vispy 显示 kitti 点云数据
- 2019双11,支付宝有哪些“秘密武器”?
- java 抽象类 静态变量_Java基础之 接口、抽象类、构造方法、setXxx,getXxx、静态变量和成员变量、代码块、this和super的区别、final关键字、重写与重载...
- linux下configure命令详细介绍[转]
- c#获取软件版本、windows用户名、windows用户目录、.net版本、windows版本等
- UI设计理论和UI总结
- pycharm远程调试的“bug”:/miniconda3/envs/learn/bin/python: can‘t open file ‘//<a2a1d7b1c-6145-4e45-...
- 【数据库】SQL server 启用IFI 功能
- 安全之路 —— C/C++开3389端口(远程终端)
- 【论文泛读】Leveraging Distribution Alignment via Stein Path for Cross-Domain Cold-Start Recommendation
- 社保到底是多交好,还是少交好?
- Unity3D 模型描边插件Outline Effect详细使用说明、C#功能扩展
- jquery ajax json文件,jQuery ajax读取本地json文件
- 【CF#715C】Digit Tree 点分治+乘法逆元
热门文章
- 在大功率DCDC中为什么LLC输出要用mos管整流而不是二极管?
- 【CSDN开发云】v1.21 版本,自定义镜像管理
- cocos2dx 物理引擎chipmunk
- Android视频编辑器(四)通过OpenGL给视频增加不同滤镜效果
- 浅谈Jmockit使用
- linux的地址随机化ASLR,[翻译]Linux (x86) Exploit 开发系列教程之六(绕过ASLR - 第一部分)...
- 金仓数据库KingbaseES运维工具参考手册(5. 辅助运维工具)
- 漏电继电器JD1-100
- 中国式智慧:古人为何乐意露破绽给皇帝?
- [HNOI 2012] 永无乡