14

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

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

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

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

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

ありがとう!

4

3 に答える 3

28

私はついにそれを働かせました!

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

また、.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 リポジトリですべてのソースを確認できます。

于 2016-08-04T13:03:27.017 に答える
4

誰かが私のように support.v4.content.FileProvider で苦労している場合は、これに置き換えることができます。

<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>
于 2019-11-10T01:17:48.333 に答える
1

<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>
于 2017-03-22T18:17:19.717 に答える