Android Pdf内容不显示在屏幕上

Android Pdf内容不显示在屏幕上,android,Android,我创建了一个简单的Pdf页面,将其保存到内部应用程序目录,并试图打开它。 PDF viewer不显示任何内容,但当我将文件复制到下载目录并手动打开它时,一切正常 private fun showPdfDocument() { val pdfDocument = PdfDocument() val paint = Paint() val pageInfo = PageInfo .Builder(500, 800, 1) .create()

我创建了一个简单的Pdf页面,将其保存到内部应用程序目录,并试图打开它。 PDF viewer不显示任何内容,但当我将文件复制到下载目录并手动打开它时,一切正常

private fun showPdfDocument() {
    val pdfDocument = PdfDocument()

    val paint = Paint()

    val pageInfo = PageInfo
        .Builder(500, 800, 1)
        .create()

    val page = pdfDocument.startPage(pageInfo)

    val canvas: Canvas = page.canvas

    paint.setTextSize(15f)

    canvas.drawText("Title", 209f, 100f, paint)
    canvas.drawText("Description", 209f, 80f, paint)

    pdfDocument.finishPage(page)

    val file = File(requireContext().externalCacheDir, "report.pdf")

    try {
        pdfDocument.writeTo(FileOutputStream(file))
    } catch (e: IOException) {
        e.printStackTrace()
    } finally {
        pdfDocument.close()
    }

    openPdfFile(file)
}

private fun openPdfFile(file: File) {
    val intent = Intent(Intent.ACTION_VIEW)
    val uriForFile = FileProvider.getUriForFile(
        requireContext(),
        BuildConfig.APPLICATION_ID + ".fileprovider",
        file
    )
    intent.setDataAndType(uriForFile, "application/pdf")
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
    val chooser = Intent.createChooser(intent, "")
    startActivity(chooser)
}

<paths>
<files-path name="internalFiles" path="/" />
<external-cache-path name="cache" path="/"/>
</paths>
private fun showPdfDocument(){
val pdfDocument=pdfDocument()
val paint=paint()
val pageInfo=pageInfo
.Builder(500800,1)
.create()
val页面=pdfDocument.startPage(页面信息)
val canvas:canvas=page.canvas
油漆。setTextSize(15f)
画布.绘图文本(“标题”,209f,100f,油漆)
画布.绘图文本(“说明”,209f,80f,油漆)
PDF文档完成页(第页)
val file=file(requireContext().externalCacheDir,“report.pdf”)
试一试{
pdfDocument.writeTo(FileOutputStream(文件))
}捕获(e:IOException){
e、 printStackTrace()
}最后{
pdfDocument.close()
}
OpenPdfile(文件)
}
私人娱乐OpenPdfile(文件:file){
val intent=intent(intent.ACTION_视图)
val uriForFile=FileProvider.getUriForFile(
requireContext(),
BuildConfig.APPLICATION_ID+“.fileprovider”,
文件
)
intent.setDataAndType(uriForFile,“应用程序/pdf”)
intent.addFlags(intent.FLAG\授予\读取\ URI\权限)
val chooser=Intent.createChooser(Intent,“”)
星触觉(选择器)
}

来自文件提供商文档:

文件提供程序只能为您事先指定的目录中的文件生成内容URI

对于包含要为其设置内容URI的文件的每个目录,必须指定
的子元素。在您的情况下,您必须将其添加到
元素中:

<external-cache-path name="external_cache" path="." />


您似乎没有共享文件提供程序路径中的缓存位置。您能否共享文件\u提供程序路径xml文件?您需要将缓存路径添加到文件提供程序:
。如需有关@ShivamPokhriyal sharedOhh的更多信息,请参阅此处,
外部缓存路径已存在。它本该起作用的。当选择器弹出时,您可以尝试选择其他应用程序吗?也许可以试着给
FLAG\u GRANT\u WRITE\u URI\u权限
权限,尽管我很确定
读取
权限是它所需要的一切。修改
我不明白会发生什么,我只是将
路径=“/”
替换为路径=“”,然后开始工作,然后我恢复了更改,它仍然有效,这让我大吃一惊