Ошибка FileProvider
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. При необходимости задавайте любые вопросы.
спасибо!
2 ответов
Я, наконец, получил его на работу!
Не забудьте поместить тег поставщика внутри тега приложения в файле манифеста - это была моя ошибка (мой тег поставщика был вне тега приложения), и причина, по которой вы получаете эту ошибку, которая в основном говорит, что она не может найти определение поставщика.
также убедитесь, что у вас есть правильные пути .XML-файл. Вот моя версия:
<?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 из моего исходного вопроса.
Я тоже забыл поставить <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>