[英]How can we disable webRTC on Android webview?
我正在开发VPN应用程序,需要在其中添加WebRTC支持菜单。 用户可以在其中启用和禁用该选项的位置。 但是我没有在我的应用程序中禁用它。 我不知道如何通过代码禁用它。
这是代码,请检查并告诉我如何解决此问题。
mWebView.setWebChromeClient(new WebChromeClient(){
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onPermissionRequest(final PermissionRequest request) {
request.deny();
}
});
要么
mWebView.setWebChromeClient(null);
权限
如果您不想注入JS,我认为您的解决方案就在不久的将来。 只需一点状态管理就可以帮助您。
您需要在编译时进行AndroidManifiedt和Android权限检查,并在用户使用您的应用程序的第一个运行时进行检查,因为您希望允许用户在体验期间专门动态地允许/拒绝此功能。 并非经常摆弄Android应用程序设置/权限。 往返于设置将是非常乏味的。 我还假定您要避免这种UX。
因此,您应该在每次触发时对WebChromeClients onPermissionRequest(基本上是您所拥有的)中的权限进行运行时检查。 您可以使用状态变量或状态中存储的域白名单,以允许用户允许限制此功能,甚至将其锁定到特定域。 您还可以专门检查RESOURCE_VIDEO_CAPTURE等。
例如,您可以在以下GitHub示例中看到我如何进行域锁定: https : //github.com/marcusbelcher/android-getUserMedia-test参见第106和116行。您可以使用变量/状态逻辑来阻止特定请求这里。 当有人触发getUserMedia时,这是每个会话的请求。
这是运行时唯一可以拒绝/允许的地方。 更多信息在这里:
https://github.com/googlesamples/android-PermissionRequest
https://developer.android.com/reference/android/webkit/PermissionRequest
JS覆盖
如果可以/想要注入JS,则可以通过navigator.mediaDevices.getUserMedia = undefined
注入并覆盖DOM中的getUserMedia。 您可以暂时将参考window.t = navigator.mediaDevices.getUserMedia; navigator.mediaDevices.getUserMedia = null;
window.t = navigator.mediaDevices.getUserMedia; navigator.mediaDevices.getUserMedia = null;
并在需要时将其反转。
更多信息在这里:
Android Webview,在素材资源文件夹中加载javascript文件
https://medium.com/appunite-edu-collection/webview-with-injected-js-script-13eb1e0257c9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.