我想将我的应用程序中的 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 文档,我们有三个意图
- -
ACTION_CREATE_DOCUMENT
> 意图操作允许用户将文件保存在特定位置。 - 意图操作允许用户选择要打开的
ACTION_OPEN_DOCUMENT
特定文档或文件。 ACTION_OPEN_DOCUMENT_TREE
意图操作允许用户选择特定目录,授予您的应用访问该目录中所有文件和子目录的权限。
但在我的情况下,上述意图操作不起作用。我想向用户显示不同的共享选项,以便用户可以与其他应用程序共享文件。
我应该怎么办?