How to Access the Camera from Within a Webview

How to access the camera from inside a Webview?

This is answer

class WebViewActivity : AppCompatActivity() {

private val permission = arrayOf(Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.MODIFY_AUDIO_SETTINGS)
private val requestCode = 1

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_web_view)
val action: String? = intent?.action
val data: Uri? = intent?.data

WebViewSetup()
if (!isPermissionGranted()) {

askPermissions()

}

webview.webChromeClient = object : WebChromeClient() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
override fun onPermissionRequest(request: PermissionRequest) {
request.grant(request.resources)
}
}

}


private fun askPermissions() {
ActivityCompat.requestPermissions(this, permission, requestCode)
}

private fun isPermissionGranted(): Boolean {
permission.forEach {
if (ActivityCompat.checkSelfPermission(this, it) != PackageManager.PERMISSION_GRANTED)
return false
}

return true
}

@SuppressLint("SetJavaScriptEnabled")
private fun WebViewSetup() {

val url = intent.extras!!.getString("url")
webview.webChromeClient = WebChromeClient()


webview.apply {
if (url != null) {
loadUrl(url)
}

Log.d("callBtn", "Url :: $url!!!! ")
settings.javaScriptEnabled = true
settings.javaScriptCanOpenWindowsAutomatically = true
settings.domStorageEnabled = true
settings.allowContentAccess = true
settings.safeBrowsingEnabled = true
settings.mediaPlaybackRequiresUserGesture = false


}
}

}

Android: WebView - not getting Camera and Mic enabled for conference

After getting those permissions, you need to override onPermissionRequest in WebChromeClient like this:

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



Related Topics



Leave a reply



Submit