我正在接收一個 pdf 作為編碼的base64 String. 我想顯示帶有 ACTION_VIEW 意圖的 PDF。我怎樣才能做到這一點?
到目前為止我所擁有的是這個
val byteArray = Base64.decode(base64String, Base64.DEFAULT)
val file = FileUtils.createFile(requireContext(), "application/pdf")
val fos = FileOutputStream(file)
fos.write(byteArray)
fos.close()
val uri = FileProvider.getUriForFile(requireContext(), requireActivity().getString(R.string.file_provider), file)
val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(uri, "application/pdf")
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
startActivity(intent)
createFile 函式看起來像
fun createFile(context: Context, mimeType: String): File {
val timeStamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
val fileName = "TMP_" timeStamp "_"
val suffix = "." MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType) //.pdf
return context.getExternalFilesDir("Documents")?.let {
if (!it.exists()) {
it.mkdir()
}
File.createTempFile(fileName, suffix, it)
} ?: File.createTempFile(fileName, suffix, Environment.getExternalStorageDirectory())
}
意圖正確啟動,但是當我嘗試使用 pdf 查看器打開它時,它說檔案已損壞。
uj5u.com熱心網友回復:
我簡單地改變了這個
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
到
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
現在作業正常!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/358579.html
