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-version0.1.9 "AppVersion“Cordova -plugin-camera 2.4.1 "Camera”cordova-plugin-compat 1.1.0 "Compat“cordova-plugin-whitelist 1.3.2”白名单“cordova- sqlite -storage 1.4.9”Cordova sqlite storage plugin“ionic plugin-Keyboard 2.2.1”键盘“
科尔多瓦平台-
安装平台:安卓6.2.3可用平台: blackberry10 ~3.8.0 (不推荐使用)浏览器~4.1.0WebOS ~3.7.0 windows ~5.0.0
NPM版本-{ npm:'3.10.3',ares:'1.10.1-DEV',http_parser:'2.7.0',icu:'57.1',模块:'48',节点:'6.4.0',openssl:'1.0.2h',uv:'1.9.1',v8:'5.0.71.60',zlib:'1.2.8‘}
发布于 2017-09-21 03:01:22
这是非常简单和基本的。只需将您的文件提供商添加到您的cordova启动器活动。在我的例子中,我有一些自定义活动,错误地在所有活动的底部添加了provider,我猜cordova无法读取该provider,这就是为什么它为java.lang.IllegalArgumentException:提供了缺少android.support.FILE_PROVIDER_PATHS元数据的
发布于 2017-03-22 06:10:14
今天我也遇到了类似的问题。尝试了所有方法(重新安装插件,从源重新安装插件,重新安装旧版本的插件),但似乎都没有帮助。不知道为什么,但是在杀死模拟器之后-> cordova干净android -> cordova平台删除android -> cordova平台添加android -> cordova构建android -连接我的设备-> cordova运行android它像以前一样工作:-)我仍然不知道为什么。尝试一下,风险自负。也许这会有帮助。
发布于 2019-02-15 04:41:14
请确保您的安卓虚拟设备模拟器设置了前后摄像头!我也有同样的错误,删除和添加平台不起作用。
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`.
工作原理:打开安卓虚拟设备管理器(安卓工作室->配置-> AVD管理器)
操作->编辑(铅笔图标)
显示高级设置
确保您添加了前置和后置摄像头!之前这个设置是"None",所以这不起作用,我得到了上面的错误。添加摄像头后,一切正常。
希望这能对像我这样的人有所帮助,因为我的AVD配置没有摄像头。
https://stackoverflow.com/questions/42502474
复制相似问题