关于webview加载百度首页

这里以百度首页为例,先写好xml文件以及Java文件

我的news.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <WebView
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

我的WebViewActivity.java文件

public class WebViewActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news);

        WebView mWebView = findViewById(R.id.web_view);
        mWebView.loadUrl("http://baidu.com");
  }
}

1. net::ERR_NAME_NOT_RESOLVED

网上用很多种说法,直到我发现我报错的原因是:没网络
因为,前几天我尝试通过应用跳转到浏览器,打开网页是可以的。
百度上也是其他的说法,看着头疼,直到我不经意间打开了模拟器的浏览器,发现没有网。
心里很郁闷啊!!!没网加载个锤子的网页。
然后,就开始解决网络的问题。

解决网络问题,点击运行,会出现下面这个错误

2. net::ERR_CLEARTEXT_NOT_PERMITTED

需要在Android 的mainfest.xml中的application添加一句配置
android:usesCleartextTraffic="true"

到这里,程序运行,网页加载出来了,结果却不是我先要的,因为网页是跳转到浏览器打开的,不是在我的webview中加载出来的

3.解决不能再webview加载出页面,跳转到浏览器加载问题

再java文件中添加
mWebView.setWebViewClient(new WebViewClient());

此时百度的首页可以再webview中加载出来,但是当我们点击网页中的链接时,出现了下面的错误

4. net::ERR_CACHE_MISS

需要在Android 的mainfest.xml中加入联网权限
<uses-permission android:name="android.permission.INTERNET"/>

再次运行,会发现链接可以点开,但是点开链接后的某些图片不能加载以及某些可以点击的内容没有反应

5. 当网页有JavaScript时,此时是不能将js中的内容也加载进来。

需要再java文件中添加
mWebView.getSettings().setJavaScriptEnabled(true);
对比两个百度首页

当我想要浏览百度首页中的新闻时,发现下面错误

6.net::ERR_UNKNOWN_URL_SCHEME


通过图片可以看出,这个 url 的开头不是以httphttps开头的。
想通过 if 判断字符串的开头是否是 http 或 https,如果不是,则以 :// 切割,让后通过http 替换掉 baiduboxapp,发现还是解决不了,放弃了放弃了

发现但按手机上的返回键,webview会直接退出,而不是返回上一给网页

7.关于webview中的返回上一个网页

再java文件中添加

mWebView.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if(event.getAction()==KeyEvent.ACTION_DOWN){
                    if(keyCode== KeyEvent.KEYCODE_BACK && mWebView.canGoBack()){
                        mWebView.goBack();
                        return  true;
                    }
                }
                return false;
            }
        });

猜你喜欢

转载自www.cnblogs.com/ranmomo/p/12325947.html