我在2个月前开始使用cordova Android编程。一切都很好,主要是现在没有工作的相机。但上周有些我的项目目录被删除了,我重新安装了所有的cordova插件和编译项目,但现在它显示错误'非法参数异常'在相机上点击令人惊讶的事情是我没有改变单行代码,它也在其他开发者机器上正常工作。
cordova插件添加cordova-plugin-camera 从相机插件安装使用的命令。
camera_app.js文件
var pictureSource; // picture source
var destinationType; // sets the format of returned value
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
pictureSource = navigator.camera.PictureSourceType;
destinationType = navigator.camera.DestinationType;
}
// Called when a photo is successfully retrieved
//
function onPhotoURISuccess(imageURI) {
// largeImage.src = imageURI;
console.log(imageURI);
console.log(document_type);
}
function getPhoto(docType) {
// Retrieve image file location from specified source
document_type = docType
$('.docError').hide();
navigator.camera.getPicture(onPhotoURISuccess, onFail, {
quality: 50,
destinationType: destinationType.FILE_URI
});
}
$('#file1').click(function() {
console.log('On camera click');
getPhoto("addressProof");
});
我试图调试代码,最终发现它是由于提供商路径 - java.lang.IllegalArgumentException:缺少android.support.FILE_PROVIDER_PATHS元数据
但是我已经在Android xml文件中添加了提供者路径元数据,因为当你添加cordova插件时会自动添加它。
<provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" />
</provider>
cordova插件 -
cordova-plugin-app-version 0.1.9&#34; AppVersion&#34; cordova-plugin-camera 2.4.1&#34; Camera&#34; cordova-plugin-compat 1.1.0&#34; Compat&#34; cordova-plugin-whitelist 1.3.2&#34; Whitelist&#34; cordova-sqlite-storage 1.4.9&#34; Cordova sqlite存储插件&#34; ionic-plugin-keyboard 2.2.1&#34;键盘&#34;
cordova平台 -
已安装的平台: android 6.2.3 可用平台: blackberry10~3.8.0(已弃用) 浏览器~4.1.0 webos~3.7.0 windows~5.0.0
NPM版本 - {npm:&#39; 3.10.3&#39;, ares:&#39; 1.10.1-DEV&#39;, http_parser:&#39; 2.7.0&#39;, icu:&#39; 57.1&#39;, 模块:&#39; 48&#39;, 节点:&#39; 6.4.0&#39;, openssl:&#39; 1.0.2h&#39;, 紫杉:&#39; 1.9.1&#39;, v8:&#39; 5.0.71.60&#39;, zlib:&#39; 1.2.8&#39; }
答案 0 :(得分:8)
这非常简单和基本。只需将您的文件提供商添加到您的cordova启动器活动中。在我的情况下,我有一些自定义活动,错误提供者被添加到所有活动的底部,我的猜测是cordova无法读取该提供商,这就是为什么它给予 java.lang.IllegalArgumentException:缺少android.support.FILE_PROVIDER_PATHS元数据
答案 1 :(得分:0)
我今天遇到了类似的问题。尝试了一切(重新安装插件,从源重新安装插件,重新安装旧版本的插件)但似乎没有任何帮助。 不知道为什么但之后 - 杀死模拟器 - &gt; cordova清洁android - &gt; cordova平台删除android - &gt; cordova平台添加android - &gt; cordova构建android - 连接我的设备 - &gt; cordova运行android 它像以前一样再次工作:-) 我还是不知道为什么。 尝试自己承担风险。也许有帮助。
答案 2 :(得分:0)
确保您的Android 虚拟设备模拟器设置了前后摄像头! 我也遇到了同样的错误,删除和添加平台无效。
Sidenote: For the Emulator to work, you need to have him already open and then you could run your Debug APK from Android Studio 3.3 or run `ionic cordova run android`.
有效方法:打开 Android虚拟设备管理器(Android Studio->配置-> AVD管理器)
操作->编辑(铅笔图标)
显示高级设置
确保已添加前置和后置摄像头!在此设置为“ None”之前,因此它不起作用,并且出现了以上错误。添加相机后,一切正常。
希望这会对像我这样配置了无摄像头AVD的人有所帮助。