无法弄清楚如何一起使用ACTION_VIEW和Storage Access Framework

卢卡斯·库托(Lucas Couto)

大约一周拉出头发后,我终于完成工作并准备寻求帮助。

基本上在我的应用程序中,我使用下面的Intent创建一个新的PDF,这是通过Storage Access Framework完成的。

val intent = Intent(Intent.ACTION_CREATE_DOCUMENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = "application/pdf"
intent.putExtra(Intent.EXTRA_TITLE, title)
startActivityForResult(intent, 1234)

之后,我在onActivityResult()方法上获得了Uri,如下所示:

uri = dataIntent.data
if (uri != null) {
    val takeFlags = data.flags and (Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
    contentResolver.takePersistableUriPermission(uri, takeFlags)
    generatePdf(uri)
}

PDF生成是可以的,当我需要调用ACTION_VIEW以便用户查看生成的文件或使用ACTION_SEND共享文件时,就会出现问题。

ACTION_VIEW用法示例(是的,我同时使用Kotlin和Java):

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(uri, mimeType);
startActivity(intent);

我一辈子都想不通如何获取另一个应用程序可以使用的Uri。

到目前为止我尝试过的是:

  • 这个答案,但是抛出了以下异常:java.lang.IllegalArgumentException:列_data不存在。可用的列:[_display_name,_size]
  • 使用DocumentFile.fromFile(file)的DocumentFile,它将Uri从content://com.myapp.provider/root/document/primary:folder-created-by-the-user / produced-pdf.pdf转换file:/ //root/document/primary:folder-created-by-the-user/generated-pdf.pdf,但仍然没有应用程序可以打开它
  • 我什至不记得的许多其他事情

如果有人可以阐明这个问题,将不胜感激。

卢卡斯·库托(Lucas Couto)

就像blackapps在回应中所说的那样,我要做的就是实现ContentProvider,更具体地说是实现DocumentProvider。

跟随此链接此链接才是最终解决问题的方法。我实现了一个CustomDocumentProvider,它在应用程序的私有文件(context.getFilesDir()。getAbsolutePath()+“ / folderToExpose”)中公开一个文件夹,此文件夹中创建的所有文件都公开给其他应用程序之后,我可以使用ACTION_VIEW和ACTION_SEND一般。

如果有人碰巧遇到了此问题,只需确保要公开的文件夹中不包含对应用程序至关重要的任何文件(例如数据库文件),因为用户将可以完全访问其所有内容。如果是新文件夹,请确保通过调用mkdirs()创建它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android中使用Storage Access Framework保存文件

来自分类Dev

无法弄清楚如何将副本传递给 DYMO.Label.Framework.3.0.js SDK

来自分类Dev

如何使用Storage Access Framework(SAF)在可移动SD卡中获取绝对路径?

来自分类Dev

如何使用Storage Access Framework在SD卡中创建新文件夹?

来自分类Dev

Android Storage Access Framework文档以递归方式创建文件和目录

来自分类Dev

在弄清楚如何在字符串报告中一起循环和使用isalpha()和isspace()时遇到麻烦

来自分类Dev

在弄清楚如何在字符串报告中一起循环和使用isalpha()和isspace()时遇到麻烦

来自分类Dev

Android:通过Storage Access Framework从URI中使用意图选择器打开文件

来自分类Dev

使用KitKat Storage Access Framework后打开Google云端硬盘文件内容URI

来自分类Dev

与Entity Framework Core一起使用

来自分类Dev

如何使用TypeProviders与MS Access一起使用

来自分类Dev

如何在Access VBA编码中一起使用Select Case和AND功能?

来自分类Dev

Slim Framework和Ember.js中的Access-Control-Origin

来自分类Dev

Restrict access to specific IP in Play Framework (Scala)

来自分类Dev

无法弄清楚如何使用Soundcloud API测试代理

来自分类Dev

无法弄清楚如何使用ImageViewTouch挂钩

来自分类Dev

无法弄清楚如何使用getchar(); 在C

来自分类Dev

无法弄清楚如何使用getchar(); 在C中

来自分类Dev

无法弄清楚如何为我的函数使用参数

来自分类Dev

JAXB-无法弄清楚如何正确使用refID

来自分类Dev

无法弄清楚如何使用$ scope。$ watch

来自分类Dev

无法弄清楚如何使用西班牙口音

来自分类Dev

无法弄清楚如何使用lighttpd接收HTTP请求

来自分类Dev

无法弄清楚如何使用 OfficeExtension.Promise

来自分类Dev

无法弄清楚htaccess如何使用URL和Parameters字符串?

来自分类Dev

无法弄清楚如何使用浮点数和固定位置

来自分类Dev

无法弄清楚如何使用Python 3.3.3和Windows 7 64bit安装numpy

来自分类Dev

LocalDB 2012 Application无法与Framework 4.0.3一起使用,但可以在4.5上使用

来自分类Dev

无法弄清楚如何<s:select>

Related 相关文章

  1. 1

    在Android中使用Storage Access Framework保存文件

  2. 2

    无法弄清楚如何将副本传递给 DYMO.Label.Framework.3.0.js SDK

  3. 3

    如何使用Storage Access Framework(SAF)在可移动SD卡中获取绝对路径?

  4. 4

    如何使用Storage Access Framework在SD卡中创建新文件夹?

  5. 5

    Android Storage Access Framework文档以递归方式创建文件和目录

  6. 6

    在弄清楚如何在字符串报告中一起循环和使用isalpha()和isspace()时遇到麻烦

  7. 7

    在弄清楚如何在字符串报告中一起循环和使用isalpha()和isspace()时遇到麻烦

  8. 8

    Android:通过Storage Access Framework从URI中使用意图选择器打开文件

  9. 9

    使用KitKat Storage Access Framework后打开Google云端硬盘文件内容URI

  10. 10

    与Entity Framework Core一起使用

  11. 11

    如何使用TypeProviders与MS Access一起使用

  12. 12

    如何在Access VBA编码中一起使用Select Case和AND功能?

  13. 13

    Slim Framework和Ember.js中的Access-Control-Origin

  14. 14

    Restrict access to specific IP in Play Framework (Scala)

  15. 15

    无法弄清楚如何使用Soundcloud API测试代理

  16. 16

    无法弄清楚如何使用ImageViewTouch挂钩

  17. 17

    无法弄清楚如何使用getchar(); 在C

  18. 18

    无法弄清楚如何使用getchar(); 在C中

  19. 19

    无法弄清楚如何为我的函数使用参数

  20. 20

    JAXB-无法弄清楚如何正确使用refID

  21. 21

    无法弄清楚如何使用$ scope。$ watch

  22. 22

    无法弄清楚如何使用西班牙口音

  23. 23

    无法弄清楚如何使用lighttpd接收HTTP请求

  24. 24

    无法弄清楚如何使用 OfficeExtension.Promise

  25. 25

    无法弄清楚htaccess如何使用URL和Parameters字符串?

  26. 26

    无法弄清楚如何使用浮点数和固定位置

  27. 27

    无法弄清楚如何使用Python 3.3.3和Windows 7 64bit安装numpy

  28. 28

    LocalDB 2012 Application无法与Framework 4.0.3一起使用,但可以在4.5上使用

  29. 29

    无法弄清楚如何<s:select>

热门标签

归档