Android Fileprovider: IllegalArgumentException: Failed to find configured root that contains

android-fileprovider, authority, pdf

Solution

I´ve got it. There were two different Problems

The first Issue was answered by CodeDiving. I had to use the Authority from the provider-declaration for the getUriForFile call. Using an other class caused the NullPointerException.

I´ve tried to get a file from filesDirectory, but in my file_path I declared only a path to cache Directory. I changed it to 'files-path' and it worked. This error caused the IllegalArgumentException.

Problem

I have a question about the android FileProvider. I want to save a pdf document and open it with a default program. I don´t want to save it in external Storage. After I´ve successfully saved the pdf to the FilesDirectory/export/temp.pdf, I´ve tried to generate an URI by using FileProvider.getUriForFile(). ``` 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); ``` Question: What do I have to pass as the second parameter "Authority" - the location of my Files, the class which can grant the URI-Permissions or something other? Whatever I´ve tried leaded to an IllegalArgumentException or a NullPointerException. My 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> ``` referenced File: ``` <?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <cache-path name="pdfTemplates" path="export/" /> </paths> ```

Original source