问题描述
在Android 10设备上,我在http服务器上的webview中收到ERR_CLEARTEXT_NOT_PERMITTED错误,但仅在某些页面上,即使我使用network_security_config来允许域。我只能通过使用打开所有域来解决该错误。我该如何解决这个问题,以便只允许我的域,而不会收到错误,但是不使用?
Logcat:
def renameObject():
a = cmds.ls(sl=True)
txt = cmds.textField('txtName',q=True,tx=True)
cmds.rename('a',txt)
cmds.confirmDialog(icn='information',message='Done!')
cmds.showWindow()
return
cmds.window(title='Rename Object')
cmds.columnLayout(adj=1)
cmds.text(label= 'Insert Name',w=300,h=30)
cmds.separator()
cmds.textField('txtName')
cmds.button(label='Rename',width=300,c=lambda*args:'renameObject()')
cmds.showWindow()
网络安全配置xml:
07:54:09.004 com.myserver.myapp D/myapp: Webview.onPageStarted called on http://myserver.com/myapp/index.PHP?view=discrete
07:54:09.232 com.myserver.myapp I/myapp: onPageFinished called.
07:54:15.938 com.myserver.myapp D/myapp: Webview.onPageStarted called on http://myserver.com/myapp/index.PHP?view=about
07:54:15.958 com.myserver.myapp I/myapp: onReceivedError called.
07:54:15.958 com.myserver.myapp I/myapp: Web Load Error:net::ERR_CLEARTEXT_NOT_PERMITTED
07:54:16.012 com.myserver.myapp I/myapp: onPageFinished called.
解决方法
根本原因是投放第三方广告内容(Google Ads)的javascript不使用https。
在onReceivedError中添加了代码,以记录导致问题的URL ...
public void onReceivedError(WebView view,WebResourceRequest request,WebResourceError error) {
super.onReceivedError(view,request,error);
Log.i(TAG,"onReceivedError called for URL "+ request.getUrl().toString());
}