【问题标题】:Open camera from webview从 webview 打开相机
【发布时间】:2016-12-22 09:59:29
【问题描述】:

使用 webChromeClient 时如何从 webview 打开摄像头?

在 HTML 中我使用:<input id="input-1" class="input-upload" type="file" accept="jpg/*|png/*|gif/*|image/*" style="display:none;"/>

在 Android 中我使用:

 webSettings.setJavaScriptEnabled(true);
 mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
 mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);

 mWebView.setWebChromeClient(new WebChromeClient(){
     @Override
     public void onPermissionRequest(final PermissionRequest request) {
         request.grant(request.getResources());
     }

拥有这些权限:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.front" android:required="true" />

这适用于 Android 下的 Chrome 浏览器。我不知道为什么它不能在同一部手机上的 web 视图中工作。

【问题讨论】:

  • 审阅:格式化文本和代码;修复了一些拼写错误/错别字

标签: java android cordova android-studio webview


【解决方案1】:

【讨论】:

  • 鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
【解决方案2】:

在 Android 应用上使用回调.. 1.) 创建一个回调类“ExampleCallback”。在dataResponse上添加注释

   class ExampleCallback{

     @JavascriptInterface
        public void dataResponse(String res) {
//Put your code to open camera
    }
    }

2.) 将此回调添加到您的 webview

webView.addJavascriptInterface(new ExampleCall(this), "Android");

在您的 html 页面上创建一个名为 Android 的 java 脚本函数,并在您想要打开相机时调用它。 java脚本会像。

<script>

    function showAndroidToast(res) {

        Android.dataResponse(res);
    }

</script>

【讨论】:

  • 在JS函数里放什么?我没有使用 javascript 代码打开相机...我只是使用来自 HTML5 的输入
  • 你可以在你的html页面中添加java脚本
  • 使用这个功能我只能从安卓设备打开画廊/相机,但我需要在所有设备上使用这个功能,比如:iOS、桌面设备等。
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 2011-08-13
  • 2022-01-16
  • 2022-07-21
  • 2016-07-22
  • 1970-01-01
相关资源
最近更新 更多