android - FileProvider - name must not be empty

匿名 (未验证) 提交于 2019-12-03 00:46:02

问题:

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> 

回答1:

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...)



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!