アプリから whatspp、gmail などの他のアプリに PDF ファイルを共有したいです。 Android 11 から導入されたスコープ ストレージ。URI を取得して いますEnvironment.getExternalStoragePublicDirectory
が、代わりにスコープ ストレージを使用する必要があります。
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 のドキュメントによると、3 つの意図があります。
- -> インテント アクションを使用すると、
ACTION_CREATE_DOCUMENT
ユーザーはファイルを特定の場所に保存できます。 - イン
ACTION_OPEN_DOCUMENT
テント アクションにより、ユーザーは特定のドキュメントまたはファイルを選択して開くことができます。 - イン
ACTION_OPEN_DOCUMENT_TREE
テント アクションにより、ユーザーは特定のディレクトリを選択できるようになり、アプリはそのディレクトリ内のすべてのファイルとサブディレクトリにアクセスできるようになります。
しかし、私の場合、上記の意図的なアクションは機能しません。ユーザーが他のアプリとファイルを共有できるように、さまざまな共有オプションをユーザーに表示したいと考えています。
私は何をすべきか?