首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何正确使用存储访问框架(SAF)和URI编辑共享存储中的文本文件?

存储访问框架(Storage Access Framework,SAF)是Android操作系统提供的一种标准API,用于访问设备上的存储空间。它提供了一种统一的方式来管理和访问不同类型的存储,包括内部存储和外部存储(如SD卡)。

使用SAF和URI编辑共享存储中的文本文件的步骤如下:

  1. 获取存储访问权限:在AndroidManifest.xml文件中添加相应的权限声明,例如READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。然后,在运行时,使用运行时权限请求机制来获取用户的存储访问权限。
  2. 打开文件选择器:使用SAF提供的Intent.ACTION_OPEN_DOCUMENT或Intent.ACTION_CREATE_DOCUMENT动作,启动文件选择器。这将打开一个系统提供的文件浏览器,允许用户选择或创建文本文件。
  3. 处理返回的URI:当用户选择或创建文件后,文件选择器将返回一个代表该文件的URI。您可以使用getContentResolver().openOutputStream(uri)方法获取文件的输出流,以便写入文件内容。
  4. 编辑文本文件:使用标准的Java文件操作API,例如FileOutputStream或BufferedWriter,将文本内容写入文件。
  5. 关闭文件:在完成文件编辑后,确保关闭文件的输出流,以释放资源并确保文件内容已写入。

SAF和URI编辑共享存储中的文本文件的优势在于它提供了一种标准化的方式来访问和编辑存储空间中的文件,无论是内部存储还是外部存储。它简化了开发过程,使得应用程序可以与不同类型的存储进行交互,而无需关心底层的细节。

SAF和URI编辑共享存储中的文本文件适用于许多场景,例如:

  • 文件管理器应用程序:允许用户浏览和编辑设备上的文件。
  • 文字编辑器应用程序:允许用户创建和编辑文本文件。
  • 笔记应用程序:允许用户创建和编辑笔记文件。
  • 图片编辑器应用程序:允许用户保存和加载编辑后的图片文件。

腾讯云提供了一系列与存储相关的产品,例如对象存储(COS)、文件存储(CFS)和云硬盘(CBS)。您可以根据具体需求选择适合的产品。以下是相关产品的介绍链接:

  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云文件存储(CFS):https://cloud.tencent.com/product/cfs
  • 腾讯云云硬盘(CBS):https://cloud.tencent.com/product/cbs

请注意,本答案仅提供了腾讯云相关产品作为参考,其他云计算品牌商也提供类似的存储解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何使用CMLoot发现SCCMCM SMB共享存储敏感文件

关于CMLoot  CMLoot是一款真的SMB共享文件爬取工具,在该工具帮助下,广大研究人员能够轻松寻找存储在系统中心配置管理器(SCCM/CM) SMB共享敏感文件。...这类共享主要用于将软件分发到Windows企业环境Windows客户端,同时可以包含带有密码证书(pfx)等敏感信息脚本/配置文件。...大多数SCCM部署都配置为允许所有用户读取共享文件,但有时仅限于计算机帐户使用。...:哈希4个首字符>\ 完整哈希”格式存储在FileLib。  ...CMLoot将在清点过程记录它无法访问访问被拒绝)任何包或文件,接下来,Invoke-CMLootHunt以使用此文件枚举访问控制试图保护实际文件。

1.3K40

AndroidQ兼容性适配指南

访问共享外部存储文件应用 使用特定于应用目录媒体集合目录 了解详情 ✅ 增强了用户对位置权限控制力 仅限前台权限,可让用户更好地控制应用对设备位置信息访问权限 在后台时请求访问用户位置信息应用...借助 SAF,用户可轻松在其所有首选文档存储提供程序浏览并打开文档、图像及其他文件。用户可通过易用标准界面,以统一方式在所有应用提供程序浏览文件,以及访问最近使用文件。...解决方法1: 参见使用MediaStore访问公共目录使用SAF选择单个文件,使用MediaStore接口访问公共目录多媒体文件,或者使用 SAF访问公共目录任意文件。...无法正确分享文件 问题原因: APP将App-specific目录私有文件分享给其他APP时,使用了file://类型 Uri。...问题分析1: 同无法访问存储设备上文件。 解决方案1: 同无法访问存储设备上文件,请使用正确公共目录文件访问方式。

7.1K30
  • Android Q 适配 之 存储新特性

    Android Q 仍然使用 READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE 作为面向用户存储相关运行时权限,但现在即使获取了这些权限,访问外部存储也受到了限制...解决方法 1:使用 MediaStore 接口访问公共目录多媒体文件,或者使用 SAF 访问公共目录任意文件。...2.2.3 无法正确分享文件 问题原因:APP 将 App-specific 目录私有文件分享给其他 APP 时,使用了 file:// 类型 Uri。...解决方案 1:同 2.2.2,请使用正确公共目录文件访问方式。...然后向用户申请该多媒体文件删改权限;使用 SAF 获取到文件或目录 Uri 时,用户已经授权读写,可以直接使用,但要注意 Uri 权限时效。

    1K30

    Android 10(Q)11(R) 分区存储适配

    Android 存储分区情况 Android 存储可以分为两大类:私有存储共享存储 私有存储 (Private Storage) : 每个应用在都拥有自己私有目录,其它应用看不到,彼此也无法访问到该目录...Android 10(Q) Android 10 主要对共享目录进行了权限详细划分,不再能通过绝对路径访问。 受影响接口: ?...共享目录:需要通过 MediaStore Storage Access Framework API 访问,视具体情况申请权限,下面详细介绍。...使用直接文件路径原生库访问文件 为了帮助您应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外 API 访问共享存储空间中媒体文件。...:之前讨论过一些问题,APP 无需权限可以访问自己创建媒体,那么系统如何进行判断?

    2.3K30

    ContentProvider再探——Document Provider

    概述 通过ContentProvider初探相信你已经知道如何使用系统提供ContentProvider或者自定义ContentProvider了, 已经基本满足日常开发需求了,有趣是,我在官方文档上看到了另外这几个...Contacts Provider:联系人提供者,这个就不用说了,这个用得最多 Storage Access Framework(SAF):存储访问框架,4.4 API 19 以后引入一个新玩意,为用户浏览手机...使用 1)SAF框架组成: Document provider:一个特殊ContentProvider,让一个存储服务(比如Google Drive)可以 对外展示自己所管理文件。...它是DocumentsProvider子类,另外,document-provider存储格式 传统文件存储格式一致,至于你内容如何存储,则完全决定于你自己,Android系统已经内置了几个 这样...下面的流程图展示了一个photo应用使用SAF可能结构: ? 分析: 从上图,我们可以看出Picker是链接调用者内容提供者一个桥梁!

    94830

    Android11 无Root 访问data目录实现、Android11访问data目录、Android11解除data目录限制、Android11 data空白解决

    Android11 无Root 访问data目录 实现 正文开始 关于Android11权限变化 作为普通安卓用户该如何方便快速地访问Android/data目录 开发者该如何实现无ROOT访问Data...解决方案 SAF方案缺点 放大招,ROOT权限直接解锁后带权访问Data目录 结语 封装好工具类 正文开始 关于Android11权限变化 谷歌在Android11及以上系统采用了文件沙盒存储模式,...SAF框架(Android Storage Access Framework) 这个框架在Android4.4就引入了,如果没有了解过的话,可以百度。...获取某个文件目录权限 方法很简单,使用android.intent.action.OPEN_DOCUMENT_TREE(调用SAF框架文件选择器选择一个文件夹)Intent就可以授权了 等下会放出工具类...SAF方案缺点 很显然,通过SAF文件存储框架访问文件,速度效率远远低于File API,因为SAF本来用途就不是用来解决Android11/data目录文件访问

    13.5K31

    Android 11 开发者常见问题: 存储 | FAQ・第二期

    为了最快、最稳定读写,我们推荐您使用 Media Store API。 我应用需要广泛地访问共享存储存储访问框架是我唯一选择吗?...存储访问框架 (简称 "SAF") 用于用户授予对目录和文件访问权限,但是需要您注意是,SAF 对某些目录授权仍存在限制,例如根目录 Android/data 目录。...虽说大多数应用在存储访问时都可以通过我们最佳实践方式去实现,例如使用 SAF 或媒体存储 API,但在某些应用场景下可能会需要更广泛地访问共享存储,亦或是无法通过最佳实践来有效地访问。...当然,列出所有可能应用场景是不切实际,但其包括了文件管理器、备份还原、反病毒程序或生产力文件编辑器等使用场景。...应用该如何测试分区存储变化? 通过这些 兼容性标志,应用可以测试与直接文件路径访问或媒体存储 API 相关分区存储行为。还有另一个 兼容性标志,也可用来测试使用存储访问框架访问某些路径时限制。

    1.1K10

    Android 11 应用兼容性适配,看这篇就够了

    分区存储对于App访问存储方式、App数据存放以及App间数据共享,都产生很大影响。...SAF(Storage Access Framework)同样也禁止访问应用私有目录。 某些应用核心用例需要访问大量文件,如文件管理操作或备份恢复操作。...获取所有的Volume 对于前面描述Uri,getContentUri如何获取所有,可以通过下述方式: 1.3.2.1.2.Uri跟公共目录关系 MediaProvider...■ 对于无法存放在公共目录文件,可以放置在私有目录,通过Uri共享给其他App访问。...2.1.3文件访问限制 1 背景 如果您应用以 Android 11 为目标平台并使用存储访问框架 (SAF),则您无法再使用ACTION_OPEN_DOCUMENTACTION_OPEN_DOCUMENT_TREE

    12.7K42

    干货 | 携程Android 10适配踩坑指南

    要点: Android Q文件存储机制修改成了沙盒模式 APP只能访问自己目录下文件公共媒体文件 Android Q版本以下机型,还是使用文件存储方式 Android Q及以上版本机型,所有应用均需要分区存储...MediaStore API在共享目录指定目录下创建文件或者访问应用自己创建文件,不需要申请存储权限 MediaStore API访问其他应用在共享目录创建媒体文件(图片、音频、视频), 需要申请存储权限...,应用需要使用MediaStore或者SAF方式访问。...2)文件访问兼容性 共享目录文件不能够通过File path方式读取,需要使用MediaStore API或者Storage Access Framework框架进行访问。...接下来使用输入输出流就可以写入文件。 重点:AndroidQ不支持file://类型访问文件,只能通过uri方式访问

    3.3K77

    App磁盘沙盒工具实践

    权限申请成功后,即可对自带外部存储共享存储空间其它目录进行访问。...分别以共享存储空间其它目录为例,阐述访问方式: 访问媒体文件(共享存储空间)。目的是拿到媒体文件路径,有两种方式获取路径: 以图片为例,假设图片存储在/sdcard/Pictures/目录下。..., id); openUri(uri); break; } } 访问文档其它文件(共享存储空间)。...2、通过Uri访问Uri可以通过MediaStore或者SAF(存储访问框架,通过intent调用startActivity访问)获取。...5.2 稳定性设计 修改文件说明 目前,针对文本文件,比如缓存json数据,存储文本文件,之前测试说让该工具支持修改属性,考虑到修改json比较复杂,因此这里只是实现可以删除文本文件,或者修改文件名称功能

    1.7K30

    详解Android10分区存储机制(Scoped Storage)适配教程

    除非您应用需要访问存放在应用专有目录以及 MediaStore 之外文件,否则最好使用分区存储。...此应用无需请求与存储相关用户权限,即可以查看外部存储以下类型文件: 应用外部特定目录文件(使用getExternalFilesDir()访问)。...需要访问共享外部存储文件应用会受到影响,需要进行兼容性适配。...MediaStore Api 否 外部存储 Downloads 无需权限 无需权限 通过存储访问框架SAF,加载系统文件选择器 否 外部存储 应用特定目录 无需权限 无法直接访问 getExternalFilesDir...把相关数据放入到ContentValues,最后把ContentValues插入到ContentResolver,并获得返回Uri

    3.4K32

    Android 8.0 功能 API(翻译自Google官网)

    增强媒体文件访问功能 存储访问框架 (SAF) 允许应用显示自定义 DocumentsProvider,后者可以为其他应用提供访问数据源文件权限。...媒体播放器无法播放没有文件描述符文件,因此在文档提供程序完成文件下载前,无法开始播放。 照片应用等媒体集合管理器必须通过作用域文件夹遍历一系列访问 URI 才能访问存储在外部 SD 卡上媒体。...Android 8.0 通过改进存储访问框架解决了各个挑战。 自定义文档提供程序 从 Android 8.0 开始,存储访问框架允许自定义文档提供程序为驻留在远程数据源文件创建可寻址文件描述符。...文档路径 在 Android 8.0 中使用存储访问框架时,您可以根据文档 ID,使用 findDocumentPath() 函数(存在于 DocumentsContract DocumentsProvider...通过在您测试中使用这种模拟 intent 逻辑,您可以侧重于自己操作组件如何准备处理您传递到不同操作组件或完全不同应用 intent。

    2.9K30

    Android 10 适配攻略小结

    为了解决这个问题,Android 10 引入了 Scoped Storage 概念,通过添加外部存储访问限制来实现更好文件管理。 首先明确一个概念,外部储存内部储存。...其他目录,使用 存储访问框架SAF (Storage Access Framwork) 所以在Android 10上即使你拥有了储存空间读写权限,也无法保证可以正常进行文件读写操作。...适配 最简单粗暴方法就是在 AndroidManifest.xml 添加 android:requestLegacyExternalStorage="true" 来请求使用存储模式。...对于 SAF 使用,可以查看我之前写 SAF使用攻略 ,这里就不展开说了。...2.一些电话、蓝牙WLANAPI需要精确位置权限 下面列举了Android 10必须具有 ACCESS_FINE_LOCATION 权限才能使用方法: 电话 TelephonyManager

    2K32

    Android 10 Android 11适配

    一、 私有目录下资源访问 存在这样一个场景:我们要分享一张图片到qq或者微信,首先第一步是要是得到这个bitmap(通过本地生成或者网络加载),然后存储到本地sd卡上,最后把存储图片绝对路径传给qq...在以上场景,涉及到了这些关键点: 把图片存储到sd卡 把绝对路径path传递给qq或者微信 1.1 直接访问sd卡根目录 通过FileOutPutStream来完成,在Android10以下都没问题...1.3 分享原理总结 分享本质就是把图片路径给qq或微信访问,让他们能够访问到我们图片。分区之前是存储在外部sd卡,都没有问题。...具体适配逻辑参考篇头文章~ 二、公共目录下资源访问 Google建议我们采用 mediaStore 或者 SAF访问。...在Android10 上公共目录下图片无法通过file:// 格式去访问,提示找不到路径。如glide加载、图片选择库、裁剪框架等等都会收到影响。

    1.4K41

    拖不得了,Android11真的来了,最全适配实践指南奉上

    println("image uri is $uri") } cursor.close() } SAF(存储访问框架--Storage Access Framework...(希望能有个应用市场一统天下好好管理这混乱市场吧!) 文档访问限制 “为让开发者有时间进行测试,以下与存储访问框架 (SAF) 相关变更只有在应用以 Android 11 为目标平台时才会生效。...” 上文存储时候说过可以通过SAF(存储访问框架--Storage Access Framework)来访问公共目录,但是Android11再次升级,部分目录和文件不能访问了,具体如下: 无法再使用...无障碍操作 “在以前 Android 版本框架会向未正确处理基于点击无障碍操作微件分派触摸事件。通常,这些视图会直接处理触摸事件,而不是注册点击监听器。...为了在正确定义无障碍操作应用创建更一致行为,Android 11 绝不会分派触摸事件。

    7K340266

    Apache Zeppelin Alluxio 解释器

    概述 Alluxio是以内存为中心分布式存储系统,能够以集群框架速度实现可靠数据共享。...load load "path" 将文件或目录数据从存储下载到Alluxio。...没有数据或元数据从存储下载到Alluxio。 安装路径后,对安装路径下对象操作将映射到安装在存储对象。...如何测试它工作 一定要正确配置Alluxio解释器,然后打开一个新段落并键入上述命令之一。 下面一个简单例子来说明如何与Alluxio解释器进行交互。...执行以下步骤: 使用sh解释器,在本地机器上创建一个新文本文件 使用Alluxio解释器: 列出了afs(Alluxio File System)根目录内容 先前创建文件被复制到afs 再次列出了

    97080
    领券