0

我想将我的应用程序中的 PDF 文件共享到其他应用程序,例如 whatspp、gmail 等。从 Android 11 引入的 Scoped 存储。我从中获取 uri, Environment.getExternalStoragePublicDirectory但不推荐使用它,我们应该使用 Scoped 存储,否则从 Android 12 它将不会返回任何内容。

val file = File(
            Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath,
            fileName
        )

val uri = Uri.parse(pdfUrl)
    val share = Intent()
    share.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
    share.action = Intent.ACTION_SEND
    share.type = "application/pdf"
    share.putExtra(Intent.EXTRA_STREAM, uri)
    startActivity(Intent.createChooser(share, "Share"))

根据 Android 文档,我们有三个意图

  1. - ACTION_CREATE_DOCUMENT> 意图操作允许用户将文件保存在特定位置。
  2. 意图操作允许用户选择要打开的ACTION_OPEN_DOCUMENT特定文档或文件。
  3. ACTION_OPEN_DOCUMENT_TREE意图操作允许用户选择特定目录,授予您的应用访问该目录中所有文件和子目录的权限。

但在我的情况下,上述意图操作不起作用。我想向用户显示不同的共享选项,以便用户可以与其他应用程序共享文件。

我应该怎么办?

4

0 回答 0