首页 > 解决方案 > 如何从范围存储在 android 11 中打开 Pdf

问题描述

我对android 11中的文件权限有疑问。我正在尝试从我的应用程序在 PDF 查看器中打开一个 PDF 文件,但由于 android 11 中的权限更改,我无法做到这一点。有人可以给我一个代码片段,说明如何做到这一点,因为我无法找到有关此问题的任何代码。

我将pdf文件保存在 context.getApplicationInfo().dataDir

我试图通过打开pdf文件

        val pdfFile = File(filePath)
        pdfIntent.setDataAndType(Uri.fromFile(pdfFile), "application/pdf")
        pdfIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY

        pdfIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        pdfIntent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY
        context.startActivity(pdfIntent)

此代码在 android 11 以下的设备上运行,但不适用于 android 11。

        val pdfIntent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { 
                         addCategory(Intent.CATEGORY_OPENABLE) 
                        }
        val pdfFile = File(filePath)
        pdfIntent.setDataAndType(Uri.fromFile(pdfFile), "application/pdf")
        pdfIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY

        pdfIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        pdfIntent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY
        context.startActivity(pdfIntent)

我在搜索范围存储时发现了这段代码,但什么也没发生

标签: androidkotlinandroid-11

解决方案


在 android 11 中不允许应用程序查看其他应用程序的文件。要共享文件,您需要使用内容提供商。内容提供者教程中提供了如何声明和设置


推荐阅读