Reputation: 16837
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
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
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
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