When a WebRTC-based H5 page requests camera or microphone access, Android requires explicit permission authorization. Configure a custom H5WebChromeClient to handle these requests in your mPaaS app.
WebRTC permission authorization
When a WebRTC-based H5 page requests access to the camera or microphone, Android fires the onPermissionRequest callback. Override this callback in a custom H5WebChromeClient to grant or deny the request based on whether your app holds the required permissions.
After initialization, register your custom permission handler with H5Utils.setProvider():
H5Utils.setProvider(MPH5WebChromeClientProvider.class.getName(), new MPH5WebChromeClientProvider() {
@Override
public H5WebChromeClient generateH5WebChromeClient(H5PageImpl h5Page) {
return new CustomH5WebChromeClient(h5Page);
}
});
Implement CustomH5WebChromeClient to handle permission requests:
package com.mpaas.demo;
import android.webkit.PermissionRequest;
import com.alipay.mobile.nebulacore.core.H5PageImpl;
import com.alipay.mobile.nebulacore.web.H5WebChromeClient;
public class CustomH5WebChromeClient extends H5WebChromeClient {
public CustomH5WebChromeClient() {
}
public CustomH5WebChromeClient(H5PageImpl page) {
super(page);
}
@Override
public void onPermissionRequest(PermissionRequest request) {
// Check if the app includes the permission. If not, request the corresponding permission.
// If the permission is granted, invoke grant
//request.grant(request.getResources());
// If the permission is rejected, call deny
// request.deny(request.getResources());
}
@Override
public void onPermissionRequestCanceled(PermissionRequest request) {
}
}