I am using webview in my application for KYC process. To open camera for uploading documents Webview shows a permission dialog to allow access to camera as shown in attached screen shot. My goal is to hide this popup and show a native permission dialog instead.
Below are the settings applied to webview.
private fun setupWebView() {
binding.webView.webViewClient = WebViewClient()
binding.webView.settings.javaScriptEnabled = true
binding.webView.settings.mediaPlaybackRequiresUserGesture = false
binding.webView.settings.allowContentAccess = true
binding.webView.settings.domStorageEnabled = true
binding.webView.settings.setSupportZoom(true)
/** Ask for camera permission from WebView **/
binding.webView.webChromeClient = object : WebChromeClient() {
override fun onPermissionRequest(request: PermissionRequest) {
request.grant(request.resources)
}
}
/** Add Javascript Event Listener **/
webBridge = AndroidBridge(this)
binding.webView.addJavascriptInterface(webBridge!!, "AndroidBridge")
binding.webView.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, weburl: String) {
binding.webView.evaluateJavascript(
"""
window.addEventListener('message', function(event) {
console.log(event);
AndroidBridge.onEventFromJavaScript(JSON.stringify(event.data));
});
""".trimIndent(), null
)
}
}
}
}
