首页 文章

从webview打开相机

提问于
浏览
0

当我使用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浏览器 . 我不知道为什么它不能在同一部手机上的webview中工作 .

2 回答

  • 0
  • 1

    在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>
    

相关问题