Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cordova Android摄像头-给出非法参数异常_Android_Cordova_Android Camera_Cross Platform_Cordova Plugins - Fatal编程技术网

Cordova Android摄像头-给出非法参数异常

Cordova Android摄像头-给出非法参数异常,android,cordova,android-camera,cross-platform,cordova-plugins,Android,Cordova,Android Camera,Cross Platform,Cordova Plugins,2个月前我开始了cordova Android编程。一切都很好,主要是相机现在坏了。但上周,我的项目目录被删除了,我重新安装了cordova的所有插件,并编译了项目,但现在它在摄像头上显示错误“非法参数异常”,令人惊讶的是,我没有更改一行代码,而且它在其他开发人员机器上也正常工作 cordova插件添加cordova插件摄像头 从相机插件安装中使用的命令 camera_app.js文件 var pictureSource; // picture source var destinationTyp

2个月前我开始了cordova Android编程。一切都很好,主要是相机现在坏了。但上周,我的项目目录被删除了,我重新安装了cordova的所有插件,并编译了项目,但现在它在摄像头上显示错误“非法参数异常”,令人惊讶的是,我没有更改一行代码,而且它在其他开发人员机器上也正常工作

cordova插件添加cordova插件摄像头 从相机插件安装中使用的命令

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\u PROVIDER\u路径元数据

但我已经在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插件应用程序版本0.1.9“AppVersion” cordova插件摄像头2.4.1“摄像头” cordova插件compat 1.1.0“compat” cordova插件白名单1.3.2“白名单” cordova sqlite存储1.4.9“cordova sqlite存储插件” 爱奥尼亚插件键盘2.2.1“键盘”

科尔多瓦平台-

已安装的平台: 安卓6.2.3 可用平台: 黑莓10~3.8.0(已弃用) 浏览器~4.1.0 webos~3.7.0 windows~5.0.0

NPM版本- {npm:'3.10.3', 战神:“1.10.1-DEV”, http_解析器:“2.7.0”, 重症监护病房:'57.1', 模块:“48”, 节点:“6.4.0”, openssl:'1.0.2h', 紫外线:“1.9.1”, v8:'5.0.71.60',
zlib:'1.2.8'}

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

它非常简单和基本。只需将下面的文件提供程序添加到cordova launcher活动中。在我的例子中,我有一些自定义活动,错误地将提供程序添加到所有活动的底部,我猜cordova无法读取该提供程序,这就是为什么它会提供
java.lang.IllegalArgumentException:缺少android.support.FILE\u PROVIDER\u路径元数据

请确保您的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管理器)

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

显示高级设置

确保您添加了前后摄像头!在此之前,此设置为“无”,因此此设置不起作用,我得到了上述错误。加上相机后,一切正常


希望这能帮助像我这样的人,他们在没有摄像头的情况下配置了AVD。

您是否尝试删除并重新添加了thr android平台?这肯定不是插件问题,因为我在他们的官方bug跟踪器中没有看到任何与此相关的问题。更多关于环境的信息发布Cordova android版本?cordova CLI版本?@jcesarmobile cordova版本7.0.1您的config.xml中的
cordova插件摄像头
条目如何?@Gandhi谢谢。我会一直照顾它在未来。但你提到,你没有作出任何代码更改,在项目中,因为工作副本。那么定制活动从何而来?您还提到了android清单文件是proper@Gandhi作为android开发人员,我曾经想过在清单代码中声明提供者并从任何地方读取它,但在cordova中却不是这样。你可以在你的项目中尝试,看看会发生什么。因此,我们永远不会调整它来测试任何东西。您本可以将androidmanifest文件发布到advance@Gandhi是的,兄弟,我应该把它贴在这里,但即使我编辑了Android清单,它也能正常工作。请不要直接编辑清单文件,因为它会在后续的Android版本中被覆盖。在构建期间,您可以使用插件将此类信息从config.xml传输到清单文件