如何在android webview中打开相机?

Posted

技术标签:

【中文标题】如何在android webview中打开相机?【英文标题】:How to open camera in android webview? 【发布时间】:2018-01-24 18:05:15 【问题描述】:

我有一个在 android webview 中打开的网页。要求是直接在点击文件选择器上启动相机。

我已经编写了以下选择图像的代码:

<input id="files" type="file" name="images[]" multiple accept="image/*" capture="camera"/>

这在 chrome 浏览器中运行良好,并打开相机以捕获图像。但是,当在 webview 中调用同一页面时,它会要求从相机、图库和类似应用程序中进行选择。

【问题讨论】:

您必须为WebView 实现自己的文件选择器并检查capture 属性。很抱歉,我现在没有任何源代码可以分享,前段时间我不得不在一个项目中实现它(但我手头没有源代码)。这是由 WebChromeClient developer.android.com/reference/android/webkit/… 处理的 【参考方案1】:

查看repo on Github,这是一个如何在基于 Webview 的应用中上传和处理图像/视频的示例。

别忘了在你的 AndroidManifest.xml 中添加这个

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果您还有其他问题,请随时提问。希望能解决你的问题。

【讨论】:

【参考方案2】:

这里建议(FAQ 部分):https://developer.chrome.com/multidevice/webview/overview 开箱即用不支持输入类型和媒体捕获。 也许这可以帮助您自己实现它: Open camera for input type file in Webview not opening Android

【讨论】:

【参考方案3】:

webView.setWebChromeClient(new WebChromeClient()

        @Override
        public void onPermissionRequest(final PermissionRequest request) 
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
                request.grant(request.getResources());
            
        

    );

【讨论】:

以上是关于如何在android webview中打开相机?的主要内容,如果未能解决你的问题,请参考以下文章

相机文件选择器未在 WebView android 中打开

如何处理没有黑屏的android相机打开

如何从 Webview 中访问相机?

如何从 Webview 中访问相机?

如何从 webview 中的按钮启动相机 -Android

如何在 Android WebView 中允许访问相机