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

时间:2017-02-28 07:18:36

标签: android cordova android-camera cross-platform cordova-plugins

我在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 s​​qlite存储插件&#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; }

3 个答案:

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

enter image description here

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

enter image description here

显示高级设置

enter image description here

确保已添加前置和后置摄像头!在此设置为“ None”之前,因此它不起作用,并且出现了以上错误。添加相机后,一切正常。

希望这会对像我这样配置了无摄像头AVD的人有所帮助。