如何打开通过 Intent.ACTION_VIEW 从​​ ACTION_CREATE_DOCUMENT 获取的文件 Uri

2023-12-07

我的应用程序请求android.net.Uri来自用户通过Intent.ACTION_CREATE_DOCUMENT这边走:

Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TITLE, "fileName.txt");
startActivityForResult(intent, REQUEST_CODE_CREATE_FILE);

然后它接收 Uri(在onAtivityResult(...))并向其写入一些文本(通过PrintWriter)。 在此阶段,我可以轻松地在文件管理器应用程序中查看文件,并通过适当的应用程序打开它。

但我无法通过我自己的应用程序打开它Intent.ACTION_VIEW用这种方法:

Intent openFileIntent = new Intent(Intent.ACTION_VIEW);
openFileIntent.setDataAndType(fileUri, "text/plain");
openFileIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);  //Or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
openFileIntent = Intent.createChooser(openFileIntent, "Choose an app:");
startActivity(openFileIntent);

我选择的任何应用程序都会显示错误消息;就像是:

文件未找到


附: 虽然不是必需的,但这是我获取文件 Uri 并写入它的过程。

首先,我获取 Uri 并保留访问此 Uri 的权限onAtivityResult(...):

Uri fileUri = resultData.getData();
final int takeFlags = resultData.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getActivity().getContentResolver().takePersistableUriPermission(fileUri, takeFlags);

Then a Writer是通过这种方法创建的:

ParcelFileDescriptor pfd  = getContentResolver().openFileDescriptor(fileUri, "w");
BufferedWriter out = new BufferedWriter( new FileWriter(pfd.getFileDescriptor()) );
PrintWriter writer = new PrintWriter(out);

最后,在向文件写入一些文本后,我关闭流:

writer.close();
pfd.close();

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何打开通过 Intent.ACTION_VIEW 从​​ ACTION_CREATE_DOCUMENT 获取的文件 Uri 的相关文章

  • 使用arm-linux-gnueabi-gcc为Android交叉编译静态C hello world

    我想使用 arm linux gnueabi gcc 从 C 构建静态 hello world 而不是使用 NDK 独立工具链或 Codesourcery 在Ubuntu中 我做了以下事情 sudo apt get install gcc
  • 如何在 Android 中获取像素颜色

    我正在使用 Intent 调用并显示图库中的图像 现在我可以使用以下命令在 TextView 中获取图像的坐标 final TextView textView TextView findViewById R id textView fina
  • Android Studio 拒绝运行 main()

    重现步骤 在Android Studio中启动一个新项目 使用最新更新 创建一个新类并像往常一样添加 main 右键单击类以运行 main 作为测试 package test public class Test public static
  • 在 Android 中存储照片相关数据的最佳方式是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要为我的应用程序存储一些照片相关信息 据我所知 您可以向图像内容提供商读取 写入 GPS 位置和图像描述 我还需要添加用于云同步的字段 标志
  • ViewPager - 无限滚动? [复制]

    这个问题在这里已经有答案了 我需要在屏幕上显示文本或图像 文本或图像 一个请求总共 10 个 是通过 HttpClient 从我的服务器获取的 当用户向右滑动并到达第 8 张幻灯片时 我需要从服务器获取下一组 10 个文本或图像 使用 Vi
  • 有人知道如何在android中实现像Unfold(这是iphone中的应用程序)这样的效果吗?

    我怎样才能实现这个效果呢 任何建议都会对我有帮助 None
  • Google 分析“获取配置文件”不允许我选择我的帐户

    我已经根据最新的 v4 文档完成了一个有效的谷歌分析集成 我们需要去哪里获取配置文件 from 但面临以下问题 我的谷歌分析帐户上的两个不同的应用程序有两个不同的跟踪ID 对于第一个应用程序 我得到了谷歌服务 json我将文件放置在根目录中
  • 单元测试定位服务

    我有一个位置跟踪服务 正在尝试对其进行单元测试 我正在尝试使用 locationManager addTestProvider 和 setTestProviderLocation 方法来实现此目的 但是 我似乎无法通过提供程序获取任何位置并
  • 从图库加载图像时应用程序崩溃

    在我的应用程序中 我有两个按钮 一个用于从图库 从设备 加载图像 另一个用于通过访问设备的相机拍照 我的代码在某些设备上正常工作 bt在某些设备上 应用程序单击图库中的图像时崩溃 任何人都可以帮助我找出实际问题吗 public class
  • 如何从 Android 服务获取应用程序上下文?

    我有一个正在运行并监听麦克风输入的 Android 服务 我希望它在满足特定条件时启动一项活动 为了创建意图 我需要应用程序上下文 我怎么才能得到它 Intent i new Intent ctx SONR class i addFlags
  • getExternalCacheDir() 在 Android 上如何工作?

    据我了解 我们将经常访问的对象缓存在比普通磁盘读取更容易访问的内存段中 getExternalCacheDir 相对于getCacheDir 指向外部文件系统 在我看来这是正常的getExternalFilesDir Android 如何优
  • 为什么 CheckBox 检查不能以编程方式与 Kotlin 一起使用?

    我想这个问题以前可能有人问过 但这个问题也发生在我身上 所以我在这里再次询问 看看我们能否找到解决方案 所以基本上问题是以编程方式检查复选框不与 Kotlin 代码一起工作 为了解释一下 我正在分享我的代码和问题的屏幕截图 filterCo
  • 加入牛轧糖热点

    我的应用程序有 2 个按钮 一个用于创建热点 另一个用于加入热点 流程是 我在其中一台设备上创建一个热点 然后尝试将其与其他设备连接 通过我的应用程序 问题是 有时我无法加入由 Nougat 设备创建的热点 它会卡在 获取 IP 地址 上
  • 具有 jsonObject 的 android 列表视图

    我正在开展一项活动 该活动请求服务器上的一个 php 文件 此 php 文件将返回给我一个JSONArray having JSONObjects作为它的元素 我明白了jArray并提取其内容 例如所有jsonObjects 每个 json
  • 从字符串中删除特定字符[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何从字符串中删除特定字符 我有一个 Arraylist 测试数组 String line testingarray get index
  • 如何使用 Android 手机通话时播放声音?

    是否可以通过编程方式与电话进行交互 例如 您可以通过程序向呼叫者播放音频吗 Google 尚未公开任何允许我们向特定正在进行的调用提供数据的 API 不过 您可以控制通话 检查这篇文章 here http prasanta paul blo
  • React Native - 方向锁定;我还能获得传感器的方向吗?

    我正在开发一个 React Native 应用程序 该应用程序设计为以纵向模式运行 方向通过清单锁定
  • 找不到 com.android.tools.build:gradle:3.0.0 [重复]

    这个问题在这里已经有答案了 当我尝试从命令行构建可能的 Android 项目时 我收到以下错误消息 配置项目 mylib 时出现问题 无法解析配置 mylib classpath 的所有文件 找不到 com android tools bu
  • Android:警报对话框消失并执行下一个意图

    我正在使用禁用 GPS 的 AlertDialog 一旦用户启用 GPS 我就会通过 Intent 转到另一个 Activity 问题是 AlertDialog 出现 然后移动到下一个活动 然后我才能单击对话框上的任何按钮 我需要做什么才能
  • SDK管理器不显示示例包选项

    我关注的是安卓安装示例的开发人员链接 http developer android com tools samples index html包裹 但是 当我展开Android平台的包列表时 没有 SDK示例 选项 复选框 可用 为什么 我已

随机推荐

  • 如何连接两个不同形状的张量

    我有两个张量 get shape 400 和 1176 我想将它们连接成一个大小为 1576 的张量 我尝试了 concat 但它要求两者具有相同的维度 怎么办呢 希望您通过批量大小传递相同维度的输入 import tensorflow a
  • 指针前一变量

    据我所知 在 C 中检查指针是否是数组末尾的一个元素是完全合法的 如下所示 char arr 16 for char ptr arr ptr arr sizeof arr sizeof arr 0 ptr some code 我的问题是这样
  • MSbuild 任务失败,因为“任何 CPU”解决方案的构建顺序不正确

    我在 Teambuild 中构建两种解决方案 一种是应用程序本身 另一种是 WiX 安装程序 我想使用 任何 CPU 构建配置来构建应用程序 并使用 x86 来构建安装程序 我在项目文件中首先列出了 任何 CPU 解决方案 但 Teambu
  • pandas 按两列值过滤行,不区分大小写

    我有一个简单的数据框 如下所示 Last Known Date ConfigredValue ReferenceValue 0 24 Jun 17 False FALSE 1 25 Jun 17 FALSE FALSE 2 26 Jun 1
  • 正则表达式 WORD 的最后一个字符

    我正在尝试匹配单词中的最后一个字符 WORD 是非空白字符的序列 n r t f 或匹配 的空行 我为此所做的表达是 n t r f n t r f 正则表达式匹配空白字符或行尾后面的非空白字符 但我不知道如何阻止它从结果中排除以下空白字符
  • Swift 计算属性不能在 init 中使用?

    我正在尝试将 MultipeerConnectivity 框架与 Swift 一起使用 我有以下属性 var peerId MCPeerID let advertiser MCNearbyServiceAdvertiser let brow
  • 混合服务器端 java 和客户端 javascript 图表库?

    是否有一个库可以用 Java 和 Javascript 为相同的数据生成相同的图表 我的任务是 显示一些华丽的动态图表在浏览器中 更好地使用动态工具提示 缩放等 我在这里考虑Javascript 并在服务器端用 Java 生成相同 或足够相
  • 为什么 (Excel VBA) 组合框更改事件每次引用其属性之一时都会触发?

    我是这个论坛的第一次用户 这是我的场景 在用户表单上 我有一个组合框 两个文本框和一个 确定 按钮 当用户从组合框的下拉列表中进行选择时 组合框的更改事件将被触发 事件处理代码将根据用户的选择使用工作表中的信息填充文本框 然后 用户可以编辑
  • 从字符串中获取价格值

    我有一个字符串 其中价格值 544 50 可以位于字符串中的任何位置 例如 HP G60 630US 笔记本电脑 笔记本电脑 RadioShack com gt 259 97 radioshack com 我需要从字符串中获取值 259 9
  • 类型错误:“dict_keys”对象不支持索引

    def shuffle self x random None int int x random random random gt shuffle list x in place return None Optional arg random
  • 使用 PHPMailer 和 GMAIL SMTP 发送电子邮件

    我已经阅读了网络上的每个示例 但似乎仍然无法连接到 GMAIL SMTP 这是我正在运行的代码 include phpMailer class phpmailer php path to the PHPMailer class mail n
  • 多个枚举的国际化(枚举值的翻译)[重复]

    这个问题在这里已经有答案了 再次讨论过的事情before我想分享 我的 解决方案并寻求增强功能 其他方法或最佳实践 我有几个需要国际化的枚举 我需要将枚举值翻译成某些语言以便在 jsf 页面中显示它们 示例枚举 public enum Tr
  • java.io.IOException:收到的身份验证质询为空

    我需要获取响应代码 但它抛出 IOException 我不知道怎么了 try url new URL urlBuilder toString conn HttpURLConnection url openConnection conn se
  • 如何将 UCS2 字符串转换为 UTF8?

    如何将 UCS2 每个字符 2 个字节 的字符串转换为 Ruby 中的 UTF8 字符串 你应该调查一下iconv 它是 Ruby 标准库的一部分 它是为这项任务而设计的 具体来说 Iconv iconv utf 8 utf 16 str
  • 如何在子窗口出现时通过单击父窗口上的按钮来禁用父窗口

    我在jsp中设计了一个窗口 其中有一个搜索按钮 当用户单击 搜索 按钮时 会出现新窗口 但此时我希望我的父窗口被禁用 这样当用户尝试在父窗口上执行任何操作时 在 搜索 表单关闭之前 它不应该允许 如果有人知道如何执行此操作 请告诉我 我已经
  • MySQL 插入后和更新后触发

    我有两张表 其中一张名为att如下 CREATE TABLE att SID varchar 50 NOT NULL CID varchar 50 NOT NULL Date date NOT NULL H1 varchar 1 NOT N
  • 如何获取和修改 Android 上支持的音频文件的元数据?

    背景 安卓支持各种音频文件编码和解码 我使用将音频录制到音频文件中android media MediaRecorder类 但我也希望显示有关我记录的文件的信息 不是标准数据 但仍然只是文本 甚至可能由用户配置 并且我认为最好将此信息存储在
  • C++,为什么结构/类中不需要前向声明

    在 C 中 为什么可以编译以下内容 struct test void foo this gt bar int bar 但不是以下内容 void foo bar int bar 需要明确的是 我确实明白在第二种情况下foo缺乏前瞻性声明bar
  • 字符串中 JSON 控制字符的转义

    在用 Java 编写 JSON 解析器时 我遇到了一个 外观 问题 在 JSON 规范中 明确指出 Javascript 控制字符与例如相同 在 C 和 Java 中 如 n 或 t 我遇到的问题是 当 JSON 字符串中存在控制代码时 因
  • 如何打开通过 Intent.ACTION_VIEW 从​​ ACTION_CREATE_DOCUMENT 获取的文件 Uri

    我的应用程序请求android net Uri来自用户通过Intent ACTION CREATE DOCUMENT这边走 Intent intent new Intent Intent ACTION CREATE DOCUMENT int