共享资源中的 PDF.FileUriExposedException.



我想打开PDF,它保存在应用程序/资产/pdf_name.pdf中

我使用 File f = new File(getContext().getCacheDir() + /pdf_name.pdf");

我正在尝试提取 URI,如果 content:// 形式使用

Uri pdfUri = FileProvider.getUriForFile(getContext(), "pcg_name.fileprovider", file);

但我得到了

java.lang.IllegalArgumentException: 找不到配置的根目录 包含 /data/data/pck_name/cache/pdf_name.pdf

我已经配置了

<paths>
    <cache-path
        name="my_documents"
        path="assets/"/>
    <cache-path
        name="my_pdf"
        path="cache/"/>
</paths>

我的目标是通过Intent打开PDF,但我不能只做:

Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType(Uri.fromFile(pdfFile),"application/pdf");
target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
target.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // DON'T FORGET this

因为它抛出文件URI暴露的异常

我使用

该代码与资产无关。资产是开发计算机上的文件;它们不是设备上的文件,除非您手动将内容复制到文件中。

也许您有代码,问题中未显示,您将文件从资产复制到new File(getContext().getCacheDir() + /pdf_name.pdf")

我已经配置了

这些都对new File(getContext().getCacheDir() + /pdf_name.pdf")无效。删除一个<cache-path>元素并从另一个<cache-path>元素中删除 path 属性,留下:

<paths>
  <cache-path name="my_pdf"/>
</paths>

相关内容

  • 没有找到相关文章

最新更新