Cordova Android Camera-提供非法参数异常

问题描述 投票:20回答:3

我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“AppVersion”cordova-plugin-camera 2.4.1“Camera”cordova-plugin-compat 1.1.0“Compat”cordova-plugin-whitelist 1.3.2“Whitelist”cordova-sqlite-存储1.4.9“Cordova s​​qlite存储插件”ionic-plugin-keyboard 2.2.1“键盘”

科尔多瓦平台 -

安装平台:android 6.2.3可用平台:blackberry10~3.8.0(不推荐)浏览器~4.1.0 webos~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'}

android cordova android-camera cross-platform cordova-plugins
3个回答
8
投票

这非常简单和基本。只需将您的文件提供商添加到您的cordova启动器活动中。在我的情况下,我有一些自定义活动,错误提供者被添加到所有活动的底部,我的猜测是cordova无法读取该提供程序,这就是为什么它给出了java.lang.IllegalArgumentException:缺少android.support.FILE_PROVIDER_PATHS元 - 数据


0
投票

我今天遇到了类似的问题。尝试了一切(重新安装插件,从源重新安装插件,重新安装旧版本的插件)但似乎没有任何帮助。不知道为什么但是之后 - 杀死模拟器 - > cordova清除android - > cordova平台删除android - > cordova平台添加android - > cordova构建android - 连接我的设备 - > cordova运行android它再次像以前一样工作:-)我还是不知道为什么。尝试自己承担风险。也许有帮助。


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管理器)

enter image description here

操作 - >编辑(铅笔图标)

enter image description here

显示高级设置

enter image description here

确保你添加了前后相机!在此设置为“无”之前,所以这不起作用,我得到了上面的错误。添加相机后,一切正常。

希望这会帮助像我这样没有相机配置AVD的人。

© www.soinside.com 2019 - 2024. All rights reserved.