I am currently working on a music tuner that uses html5 and a webview to display the \'application\'. I\'ve written the all the permission required in manifest and I think f
Summarising, you need the following components:
MODIFY_AUDIO_SETTINGS
permission.WebChromeClient
and listen to callbacks for onPermissionRequest
request
object, create a global variable of this request
object, iterate and look for specific permission inside the PermissionRequest
class, ex. PermissionRequest.RESOURCE_VIDEO_CAPTURE
which translates to the Manifest.permission.CAMERA
permission, check if your app has this permission or not, using any mechanism you wish if not, request, if yes do 4.request.grant(new String[]{PermissionRequest.RESOURCE_VIDEO_CAPTURE})
and you're good to go. snippet:
webView.webChromeClient = object: WebChromeClient(){
override fun onPermissionRequest(request: PermissionRequest?) {
super.onPermissionRequest(request)
webkitPermissionRequest = request
request?.resources?.forEach {
when(it){
PermissionRequest.RESOURCE_AUDIO_CAPTURE-> {
askForWebkitPermission(it, Manifest.permission.RECORD_AUDIO, REQUEST_CODE_PERMISSION_AUDIO)
}
PermissionRequest.RESOURCE_VIDEO_CAPTURE->{
askForWebkitPermission(it, Manifest.permission.CAMERA, REQUEST_CODE_PERMISSION_CAMERA)
}
}
}
}
}
private fun askForWebkitPermission(webkitPermission: String, androidPermission: String, requestCode: Int){
val context = activity?: return
if (context.hasPermission(androidPermission)){
webkitPermissionRequest!!.grant(arrayOf(webkitPermission))
}else{
requestPermissions(arrayOf(androidPermission), requestCode)
}
}
Hope this helps.
Google's sample for the same: https://github.com/googlesamples/android-PermissionRequest