Cordova Android摄像头-给出非法参数异常
2个月前我开始了cordova Android编程。一切都很好,主要是相机现在坏了。但上周,我的项目目录被删除了,我重新安装了cordova的所有插件,并编译了项目,但现在它在摄像头上显示错误“非法参数异常”,令人惊讶的是,我没有更改一行代码,而且它在其他开发人员机器上也正常工作 cordova插件添加cordova插件摄像头 从相机插件安装中使用的命令 camera_app.js文件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
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传输到清单文件