android - 无法访问 android webview 上的本地媒体
问题描述
我正在尝试制作一个包含 webRTC 的 webview,但是当我尝试加入以访问房间时,我收到以下错误:“无法访问本地媒体。错误名称是 NotAllowedError。Countinuing without sendig to stream” . 提前致谢。
@SuppressLint("SetJavaScriptEnable")
private void initWebView(){
webView = findViewById(R.id.WebViewID);
webView.setWebChromeClient(new WebChromeClient(){
@Nullable
@Override
public Bitmap getDefaultVideoPoster() {
return Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888);
}
});
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setMediaPlaybackRequiresUserGesture(false);
webView.loadUrl(url);
}
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
解决方案
通过以下方式在清单中声明权限是不够的:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
您必须要求用户在代码中授予这些权限(参考),或者手动转到设备中的权限设置并授予所需的应用程序Camera
和Microphone
权限。这样做应该可以解决问题。
推荐阅读
- javascript - 在没有循环的 X 秒后显示/隐藏 Div 系列
- string - Flutter:是否可以仅在传递给文本小部件之前在字符串中格式化(粗体、斜体等)?
- javascript - 将函数签名转换为类型?
- javascript - 链接标签中的样式应适用于整个页面,但不适用于特定的 HTML 元素
- python - 如何从 url 中删除查询字符串?
- javascript - 滚动在三星互联网上不起作用
- twitter-bootstrap - 如何阅读引导程序源代码?
- javascript - 在函数中初始化、添加、保存局部变量,以及使用函数访问该变量
- python - AttributeError:“函数”对象没有属性“place_id”
- ruby-on-rails - 如何在 Ruby on Rails 的网站上以 .pptx 或 .pdf 格式显示数据库中的文件