从 Android Q 的内容 uri 打开 pdf 查看器
Open pdf viewer from content uri at Android Q
我使用此代码存储 pdf 文件:
val intent = Intent().apply {
action = Intent.ACTION_CREATE_DOCUMENT
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/pdf"
putExtra(Intent.EXTRA_TITLE, file.name)
}
startActivityForResult(intent, SAVE_FILE_REQUEST_CODE)
在 onActivityResult 之后我使用 OutputStream 保存数据。文件的 URI 可能如下所示:
content://com.android.providers.downloads.documents/document/4594
or
content://com.google.android.apps.docs.storage/document/documentId
但是当我尝试以此意图启动 activity 时,pdf 查看器应用程序显示错误:
val openFileIntent = Intent(Intent.ACTION_VIEW, contentUri)
.apply {
setDataAndType(contentUri, "application/pdf")
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
}
是否可以从内容 Uri 打开 pdf 查看器activity?
我可以确认评论有答案: and
val target = Intent(Intent.ACTION_VIEW)
target.setDataAndType(uri, "application/pdf")
target.flags = Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_GRANT_READ_URI_PERMISSION
val intent: Intent = Intent.createChooser(target, "Open File")
try {
startActivity(intent)
} catch (e: ActivityNotFoundException) {
// Instruct the user to install a PDF reader here
}
将“或 Intent.FLAG_GRANT_READ_URI_PERMISSION”添加到标志中使我的 PDF reader 能够使用 content:// Uri 结构正确打开文件。
我使用此代码存储 pdf 文件:
val intent = Intent().apply {
action = Intent.ACTION_CREATE_DOCUMENT
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/pdf"
putExtra(Intent.EXTRA_TITLE, file.name)
}
startActivityForResult(intent, SAVE_FILE_REQUEST_CODE)
在 onActivityResult 之后我使用 OutputStream 保存数据。文件的 URI 可能如下所示:
content://com.android.providers.downloads.documents/document/4594
or
content://com.google.android.apps.docs.storage/document/documentId
但是当我尝试以此意图启动 activity 时,pdf 查看器应用程序显示错误:
val openFileIntent = Intent(Intent.ACTION_VIEW, contentUri)
.apply {
setDataAndType(contentUri, "application/pdf")
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
}
是否可以从内容 Uri 打开 pdf 查看器activity?
我可以确认评论有答案:
val target = Intent(Intent.ACTION_VIEW)
target.setDataAndType(uri, "application/pdf")
target.flags = Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_GRANT_READ_URI_PERMISSION
val intent: Intent = Intent.createChooser(target, "Open File")
try {
startActivity(intent)
} catch (e: ActivityNotFoundException) {
// Instruct the user to install a PDF reader here
}
将“或 Intent.FLAG_GRANT_READ_URI_PERMISSION”添加到标志中使我的 PDF reader 能够使用 content:// Uri 结构正确打开文件。