Я расширяю свой плагин Cordova для Android, чтобы использовать камеру.После обширного прочтения различных статей для разработчиков Android по этой теме, а также обсуждений на этом форуме, я сделал следующее:
В файле моего плагина config.xml
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.app.camera" android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/reviewpics"/>
</provider>
вместе с
<resource-file src="src/android/xml/reviewpics.xml"
target="res/xml/reviewpics.xml" />
Для удобства я открыл скомпилированный APK в виде zip-архива и проверил, действительно ли существует файл res / xml / reviewpics.xml.
reviewpics.xml
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="camera" path="."/>
</paths>
для совместного использования корневого внутреннего хранилища приложения как camera
.
В самом приложении я делаю следующее
File photo = new File(...);
Uri uri =
FileProvider.getUriForFile(cordova.getActivity(),
"com.example.app.camera",photo);
Однако, когда я компилирую, устанавливаю и запускаю это, я последовательно получаю сообщение
Попытка вызвать виртуальный метод 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData (android.content.pm.PackageManager, java.lang.String) 'для ссылки на нулевой объект
Очевидно, что я делаю что-то не так, хотя чувствую, что следовал различным примерам иучебники по этому вопросу, чтобыписьмо.Может кто-нибудь сказать мне, что мне здесь не хватает?