问题场景:app内嵌套一个H5做的聊天页面,发送语音消息需要申请麦克风权限;
清单文件权限是:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
问题一:页面弹框提示
大写的what???我明明动态申请录音权限了啊
最后查到解决方法;原因是webview需要在WebChromeClient中重写onPermissionRequest方法,代码如下:
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
}
@Override
public void onPermissionRequest(PermissionRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//直接同意即可 deny是拒绝
request.grant(request.getResources());
}
}
});
myWebView.loadUrl(webUrl);
原以为就这么解决了,事与愿违第二个问题来了,弹框提示这个
最终看到这篇文章,传送门:http://www.voidcn.com/article/p-bshmzkhc-bub.html
解决方法很简单,就是在清单文件加入这个权限就好了 😂😂
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
至此,没有问题了,可以正常使用了!给自己点赞👍
给自己做个笔记的同时也希望能帮助到别人,喜欢的可以点个关注,随时沟通探讨技术。