我正在扩展适用于Android的Cordova插件以使用相机。在广泛阅读了有关该主题的各种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)
很明显,我做错了,尽管我觉得我已经按照书信中的内容处理了各种示例和教程。有人可以告诉我我在这里想念什么吗?
答案 0 :(得分:0)
我将在此留下这个问题,并为遇到类似问题的任何其他人的利益提供答案。这里要记住的关键是上下文- Cordova插件。 Cordova documentation on plugin.xml最多是粗略的,并省略了很多细节。但是,请记住,有必要告诉Cordova仅使用哪个Android项目配置文件来放置您可能通过plugin.xml
提供的任何指令。我没有这样做,结果是我的
<provider>...
block根本没有将其放入任何配置文件。将<provider>...
包裹在
<config-file target="AndroidManifest.xml" parent="application">
...
</config-file>
阻止一切正常运行!