【问题标题】:Android sharing between apps using ContentUri使用 ContentUri 在应用程序之间进行 Android 共享
【发布时间】:2016-10-23 18:34:00
【问题描述】:

我想知道在 android 中将信息从一个应用传递到同一设备上的另一个应用的最佳方法。

例如:

  1. 我打开 google 应用程序并与我的应用程序 A 共享一个文档。
  2. Google App 生成了一个意图并发送了一个内容 URI。从我的 理解,内容uri包含文件的信息 (文件名、文件大小、mimetype)和提取 位于 Google 应用程序缓存中的内容 设备。
  3. 当应用 A 打开时,它会读取内容 URI。理想情况下,它 应该能够从内容 uri 中提取信息,并且 然后渲染图像。这意味着 App A 将显示共享的图像。在这个例子中,谷歌应用程序共享一个文档,应用程序 A 想要在它自己的应用程序中打开并显示该文档。

令人困惑的部分

看来,理想情况下,您永远不应该假设您可以提取文件路径,并且谷歌已经进行了一些更新,这使得这不可能。

解决方法:

  1. 尽管我无法从 contentUri,我可以读取 contentUri 的字节数 指向。所以我可以将它保存到与 App A 的本地缓存并传递该路径以获取渲染或传递 字节回来。这是指 App A 显示内容。那就是传递路径或字节,让我们假设它知道如何在给定信息的情况下显示它。

问题:

  1. 解决方法似乎并不理想,因为从技术上讲,您是 在设备上再次保存文件。有两个位置 相同的内容(谷歌应用存储和应用 A 的存储)。你也 必须管理何时删除您创建的 App A 的文件。 这看起来并不理想,想知道什么是最好的 方法是什么?或者这是预期的流量?

  2. 我也不知道 如果将字节备份与仅传递文件路径比较理想。

更新

更具体地说,我正在创建的应用程序是一个混合应用程序,我使用 cordova 插件与网络应用程序进行交互。 Web 应用程序具有根据文件路径处理或显示共享文档的方法。因此,理想情况下,我希望与仅读取文件路径保持一致,以便 Web 应用程序支持的其他平台不会中断。

任何建议表示赞赏, D

【问题讨论】:

  • 请更详细地解释“传递该路径以获取渲染或传回字节”的含义以及“将字节向上传递”的含义。 App A 究竟应该对Uri 所代表的内容做什么?
  • 已更新:假设在我的用例中,这是一个谷歌应用程序试图与应用程序 A 共享的谷歌文档。内容 URI 是由谷歌应用程序生成的,所以我无法控制它是如何生成的编码但只能假设它知道如何访问文档。我能够读取文档的字节,但无法访问它的存储位置。应用程序 A 假设读取文件并显示它。在这种情况下,请阅读共享文档并显示它。

标签: android uri android-contentprovider android-sharing


【解决方案1】:

尽管我无法从 contentUri 中提取文件路径,但我能够读取 contentUri 指向的字节。

正确。这与您使用 HTTPS URL 的方式没有显着不同,在这种情况下您也没有对内容的直接文件系统访问权限(在这种情况下,驻留在不同的服务器上)。

所以我可以将它保存到与 App A 的本地缓存相关的文件中,并传递该路径以获取渲染或传回字节。

或者,只消耗字节。同样,与 HTTPS URL 进行类比,无需将这些字节保存到磁盘即可使用它们。

解决方法似乎并不理想,因为从技术上讲,您是在设备上再次保存文件。有两个位置具有相同的内容(谷歌应用存储和应用 A 的存储)。您还必须管理何时删除您创建的 App A 的文件。

然后不要在设备上再次保存文件,而只需使用字节流。同样,这与使用 HTTPS URL 没有太大区别。

这看起来并不理想,想知道最好的方法是什么?

不要将字节写入磁盘。只需使用它们。

因此,理想情况下,我希望与仅读取文件路径保持一致,这样 Web 应用程序支持的其他平台就不会中断。

您的选择是:

  • 改进 Web 应用程序代码,使本地文件路径成为一个可能的数据源,或

  • 在复制该数据时遇到问题

毕竟,请记住,您通过 ACTION_SEND 获得的 Uri 不一定是 content Uri。它很容易成为httphttps Uri

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多