FileProvider error

前端 未结 3 1746
无人共我
无人共我 2020-12-29 10:23

https://developer.android.com/training/camera/photobasics.html

All I am trying to do is take a picture with the Camera, save it and display it in an ImageView.

相关标签:
3条回答
  • 2020-12-29 10:31

    I also forgot to put <provider> within <application>; I mistakenly put them on the same level which I have since fixed.

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="zm.mytestapplication">
    
    <application
        ...
        android:theme="@style/AppTheme">
    
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="zm.mytestapplication.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"></meta-data>
        </provider>
    </application>
    </manifest>
    

    file_paths.xml

    <?xml version="1.0" encoding="utf-8"?>
    <paths xmlns:android="http://schemas.android.com/apk/res/android">
        <external-path name="my_images" path="Pictures/zm/" />
    </paths>
    
    0 讨论(0)
  • 2020-12-29 10:37

    I finally got it to work!

    Remember to put the provider tag INSIDE the application tag in the manifest file - that was my mistake (my provider tag was OUTSIDE of the application tag), and the reason you get this error, which basically says it cannot find the definition of the Provider.

    Also make sure you have the correct paths in the .xml file. Here is my version:

    <?xml version="1.0" encoding="utf-8"?>
    <paths xmlns:android="http://schemas.android.com/apk/res/android">
    
        <external-path
            name="my_images"   
            path="Android/data/org.projects.cameraapp/files/Pictures" />
    
    </paths>
    

    Of course you have to change the path for your own application.

    My actual Provider then looks like this:

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="org.projects.cameraapp.fileprovider"          
        android:exported="false"
        android:grantUriPermissions="true">
    
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/filepaths" />
    
    </provider>
    

    Again, you'll need to change the authorities value in your own application.

    You can see all the source at the GitHub repository from my original question.

    0 讨论(0)
  • 2020-12-29 10:37

    If someone is having hard time as me with support.v4.content.FileProvider you can replace it with this.

    <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.camera.app.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths">
    
            </meta-data>
        </provider>
    
    0 讨论(0)
提交回复
热议问题