我对android FileProvider有疑问。
我想保存一个pdf文档,并使用默认程序打开它。
我不想将其保存在外部存储中。

将PDF成功保存到FilesDirectory / export / temp.pdf后,
我尝试使用FileProvider.getUriForFile()生成URI。

File path = new File(getFilesDir(), "export");
File pdf = new File(path + File.separator + "temp.pdf");
pdf.getParentFile().mkdirs();

if (!pdf.exists())
    pdf.createNewFile();

Uri uri = FileProvider.getUriForFile(getApplicationContext(), "?", pdf);


问题:作为第二个参数“ Authority”,我必须传递什么-我的文件的位置,可以授予URI-Permissions的类或其他内容?无论我尝试过什么,都会导致IllegalArgumentException或NullPointerException。
我的FileProvider(XML):

<provider
    android:name="android.support.v4.content.FileProvider"
        android:authorities="com.example.myApp.myActivity"
        android:exported="false"
        android:grantUriPermissions="true">

        <meta-data
             android:name="android.support.FILE_PROVIDER_PATHS"
             android:resource="@xml/file_path"/>
</provider>


参考文件:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <cache-path name="pdfTemplates" path="export/" />
</paths>

最佳答案

我懂了。有两个不同的问题


CodeDiving回答了第一个问题。
我必须使用提供者声明中的Authority来进行getUriForFile调用。使用其他类导致NullPointerException。
我试图从filesDirectory获取文件,但是在我的file_path中,我仅声明了用于缓存Directory的路径。我将其更改为“ files-path”,并且有效。此错误导致IllegalArgumentException。

关于pdf - Android Fileprovider:IllegalArgumentException:无法找到包含以下内容的已配置根目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20263428/

10-12 03:15