在阅读《第一行代码》学习WebView的用法时发现的问题以及解决
按照书上的代码编写MainActivity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView =findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true);//让WebView支持JavaScript脚本
webView.setWebViewClient(new WebViewClient());//在WebView上显示网页
webView.loadUrl("http://www.baidu.com");
}
}
然后在AndroidManifest上添加网络权限的声明:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
运行后网页无法显示,显示错误CLEARTEXT_NOT_PERMITTED:
上网查阅资料后发现原来要在AndroidManifest的Application添加属性:
android:usesCleartextTraffic="true"
添加完运行后网页仍然无法显示,显示新的错误ACCESS_DENIED:
网上查阅资料后发现这是模拟器版本太高的问题,我使用的是Android9.+的API29的模拟器,修改为版本为API28后网页能正常显示:
至于如何在API29的模拟器上实现WebView显示网页,我暂无没有解决方案,在Stack Overflow上也有人遇到了同样的问题,但是仍然没有解决方法,如果有人知道如何解决的话希望能告诉我。