web-dev-qa-db-ja.com

FileProviderエラー

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

私がやろうとしているのは、カメラで写真を撮って保存し、ImageViewに表示することです。

上記のAndroidチュートリアルに従いましたが、次の行でエラー(NullPointerException)が発生し続けます。

Uri photoURI = FileProvider.getUriForFile(this, "com.example.Android.fileprovider", photoFile);

アプリのマニフェストでFileProviderを構成する必要があり、「権限」が一致する必要があることを知っています。 authorities引数に何を入れるべきか、私にはよくわかりません。ファイルres/xml/file_paths.xmlを含むチュートリアルのすべてのコードをコピーしました。必要に応じて質問をしてください。

ありがとう!

13
rafvasq

ようやく機能するようになりました!

プロバイダータグをマニフェストファイル内のアプリケーションタグ内に配置することを忘れないでください-それは私の間違いでした(私のプロバイダータグはアプリケーションタグの外側でした)。 。

また、.x​​mlファイルに正しいパスがあることを確認してください。これが私のバージョンです:

<?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>

もちろん、独自のアプリケーションのパスを変更する必要があります。

実際のプロバイダーは次のようになります。

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

繰り返しますが、独自のアプリケーションで権限値を変更する必要があります。

私の元の質問からGitHubリポジトリですべてのソースを見ることができます。

27
zaifrun

<provider> 以内に <application>;誤って修正したのと同じレベルにしました。

<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>
1
Zavvio Mok