Jake
Jake

Reputation: 16837

android - FileProvider - name must not be empty

I have the following FileProvider in my manifest :

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.android.provider.DataSharing-1"
        android:exported="false"
        android:grantUriPermissions="true">

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

    </provider>

I am getting the following exception on app launch :

 java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.IllegalArgumentException: Name must not be empty
        at android.app.ActivityThread.installProvider(ActivityThread.java:4793)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:4385)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4325)
        at android.app.ActivityThread.access$1500(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.IllegalArgumentException: Name must not be empty
        at android.support.v4.content.FileProvider$SimplePathStrategy.addRoot(FileProvider.java:644)
        at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:587)
        at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:534)
        at android.support.v4.content.FileProvider.attachInfo(FileProvider.java:352)
        at android.app.ActivityThread.installProvider(ActivityThread.java:4790) ...

How do I resolve this ? Where did I miss specifying a name ?

Edit :

res/xml/paths.xml

<paths xmlns:android="http://schemas.android.com/apk/res/android">

    <files-path android:name="my_images" android:path="images/"/>
</paths>

Upvotes: 10

Views: 9568

Answers (3)

Vasanth kumar
Vasanth kumar

Reputation: 1

In my case the xml file was saved as filename_V21.xml that created the problem. I renamed the path file to filename.xml solved the problem.

Upvotes: 0

pramod_m
pramod_m

Reputation: 183

Nothing worked for me . So i closed the project from Android Studio and then deleted .gradle and .idea files and then it started working like a charm :) First it was an issue with the authorities. you should give the .fileprovider or the fileprovider for your app maybe with the applicationId and then it works. Hope this might help someone

Upvotes: 0

CommonsWare
CommonsWare

Reputation: 1006554

Remove the android: prefix from the attributes in your paths.xml file. It should look like:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="my_images" path="images/"/>
</paths>

(and you can probably get rid of the xmlns:android bit too, since it's not used, though I have it in one of mine, perhaps because Eclipse put it there when creating the file...)

Upvotes: 14

Related Questions