在不使用cordova相机的情况下在android上的cordova应用程序中选择文件上传中的相机

pje*_*321 26 html camera android cordova

所以我制作了一个cordova应用程序,我添加了android平台,并制作了一个带有imput字段的简单html

<input type="file" capture="camera" accept="image/*" id="takePictureField">
Run Code Online (Sandbox Code Playgroud)

我已经添加了

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<feature name="http://api.phonegap.com/1.0/camera" />
Run Code Online (Sandbox Code Playgroud)

到清单文件.

但是当我按下按钮时,我无法选择用相机拍摄新照片.我有什么许可我想念,或其他什么?

我无法使用cordova拍照功能,它必须在纯HTML中完成.

Gan*_*dhi 13

经过一些谷歌搜索,这是我可以得出的结论:

移动浏览器中的媒体捕获似乎仍存在一些问题.看看这个链接.摘录说:

实际上,似乎当前的实现根本不依赖于capture属性,而只依赖于typeaccept属性:浏览器显示一个对话框,用户可以在其中选择文件的位置,捕获属性不是考虑到了.例如,iOS Safari依赖于accept图像和视频(不是音频)的属性(不捕获).即使您不使用该accept属性,浏览器也会让您在"拍摄照片或视频"和"选择现有"之间进行选择

因此看起来像捕获属性不会产生任何影响.

此外,建议您查看此SO帖子,了解有关完成此工作的更多信息.希望能帮助到你.干杯.

更新:在低调之后,我进一步深入探讨了这个问题.大多数搜索都没有成功,因为这个问题的最佳解决方案是使用Cordova相机插件.最后偶然发现了这个SO帖子,这与这个问题完全重复.用户能够解决问题(尽管使用人行横道Web视图).@Fabio已在此处提及该帖子中的答案.但是,您可以使用cordova-custom-plugin添加所需的权限,而不是仅仅为了包含权限而添加插件.

另外,根据@ jcesarmobile的评论(谁是Cordova专家),在没有人行横道网页视图插件的帖子中,输入类型仅适用于iOS而不适用于Android.所以使用相机插件是不使用crosswalk插件使其工作的唯一方法.希望它有所帮助.

更新2:在更新问题之后,我更深入地解决了这个问题.但现在我可以确保Android Webview仍然无法解决此问题.看起来它不是Cordova问题,而是Chromium Web视图的问题.

有关详细信息,请在Apache Cordova Issue Tracker中查看这些问题:

到目前为止,这两个问题都没有得到解决.所以我相信,就目前而言,除非你使用Cordova相机插件,否则你无法在Android上运行.希望您同意我并接受该决议.干杯


Fab*_* C. 0

免责声明:最近关于此答案的评论报告称其不再起作用。此问题和答案与旧的 cordova 和插件版本相关,因此它们可能不适用于您当前的情况。

这是一个老问题,但我刚刚遇到这个问题。事实证明,实现您想要的最简单方法是将这些 cordova 插件包含在您的应用程序中,即使您不需要使用它们

cordova-plugin-camera
cordova-plugin-media-capture
cordova-plugin-device
cordova-plugin-file
cordova-plugin-media
Run Code Online (Sandbox Code Playgroud)

加载这些后我发现了这种行为

点击

<input type="file" />
Run Code Online (Sandbox Code Playgroud)

要求您从相机、摄像机、麦克风或文档中进行选择

点击

<input type="file" accept="image/*" />
Run Code Online (Sandbox Code Playgroud)

要求您选择相机或文档

点击

<input type="file" accept="image/*" capture="capture" />
Run Code Online (Sandbox Code Playgroud)

立即启动相机。