WebView使用(一)--四种加载网页的方法

2020-08-11  本文已影响0人  jeffrey12138

其实这个控件相对来说说还是比较复杂的,但是学会之后,又会觉得其实也没有这么难,同时在学习的过程也会遇到不少的坑,让我觉得差点窒息,不过多亏各位书友发布的各种神技,我的问题也迎刃而解了,下面就是主要内容了:
第一种加载方法:webView.LoadUrl(String url);

        //通过访问网络地址获取
        webView.loadUrl("http://www.baidu.com/");
        //通过手机SD卡获取(Environment.getExternalStorageDirectory().getPath()是获取手机SD卡根目录的,后面就是目录的地址)
        webView.loadUrl("file://"+ Environment.getExternalStorageDirectory().getPath()+"/1/index.heml");
        //通过项目本地资源获取
        webView.loadUrl("file:///android_asset/index.html");
        //访问本地html
        webView.loadUrl("http://192.168.252.164:8080");
        webView.setWebViewClient(new WebViewClient())

第二种加载方法:loadUrl(String url,Map<String,String> additionalHttpHeaders);

     webView.loadUrl("http://192.168.252.164:8080");
     webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(android.webkit.WebView view, WebResourceRequest request) {
                //通过map<>编写请求头的信心
                Map<String,String> reqHeaders=new HashMap<>();
                reqHeaders.put("android-webview-demo","testReqHeaders");
                //通过下面这种方式把请求头信息写入
                webView.loadUrl("http://192.168.252.164:8080",reqHeaders);
                return super.shouldOverrideUrlLoading(view, request);
            }
        });

这个在浏览器中做调试的话,需要增加下面代码:

`if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //此判断版本是否为android4.4以上,因为此方法是在android4.4版本之后出现的
            //此方法可以使webview可以在浏览器中进行调试
            webView.setWebContentsDebuggingEnabled(true);
        }

当然,有编写的方法也会有测试的方法:
调试的方法如下:
1、使用浏览器打开chrome://inspect/#devices这个地址;
2、打开浏览器后,使用模拟器或者真机测试的,都会看到下面这个内容,然后点进去

image.png

3、按照下面的点开就可以看到了哈


image.png

第三种加载方法:loadData(String data,String mimeType,String encoding)
参数1:html代码的内容
参数2:mimeTypr类型
参数3:代码的编码类型
这个就相对来说简单点:代码如下:

public class WebView extends AppCompatActivity {
    private android.webkit.WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //此判断版本是否为android4.4以上,因为此方法是在android4.4版本之后出现的
            //此方法可以使webview可以在浏览器中进行调试
            webView.setWebContentsDebuggingEnabled(true);
        }

        webView=findViewById(R.id.webView);
       /* //通过访问网络地址获取
        webView.loadUrl("http://www.baidu.com/");
        //通过手机SD卡获取(Environment.getExternalStorageDirectory().getPath()是获取手机SD卡根目录的,后面就是目录的地址)
        webView.loadUrl("file://"+ Environment.getExternalStorageDirectory().getPath()+"/1/index.heml");
        //通过项目本地资源获取
        webView.loadUrl("file:///android_asset/index.html");*/
        //访问本地html
       /* webView.loadUrl("http://192.168.252.164:8080");*/
        webView.loadData("<h1>Hello webView</h1>","text/html","utf-8");


        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(android.webkit.WebView view, String url) {
                /*//通过map<>编写请求头的信心
                Map<String,String> reqHeaders=new HashMap<>();
                reqHeaders.put("android-webview-demo","testReqHeaders");
                //通过下面这种方式把请求头信息写入
                webView.loadUrl("http://192.168.252.164:8080",reqHeaders);*/
                return super.shouldOverrideUrlLoading(view, url);
            }
        });

    }
}

第四种加载方式:loadDataWithBaseUrl(String baseUrl , String data,String mimeType,String encoding,String historyUrl);
参数1:是指WebView会在加载baseUrl基础上运行;
参数5:用于后退网页的作用;
这里说到了涉及到控制网页的前进以及后退,顺便也详细说下:
在这里涉及到7个使用方法:
1、boolean canGoBack();可后退的方法;
2、boolean canGoForward();可前进的方法;
3、boolean canGoBackOrForward(int steps);可前进或后退的方法,参数是指后退或前进的页数,当参数为正数,表示前进,当参数为负数时,表示前进
4、void goBack();立即后退的方法
5、void gpForward();立即前进的方法
6、void goBackOrForward(int steps);立即前进或者后退的方法,参数同上;
7、void clearHistory();可以清空浏览记录,但是注意,执行这个方法后,以上6个方法就没有办法执行了,或者执行这个方法后,继续浏览;
代码如下:

 //说明下哈,这里的7个方法,我都已经在布局中使用Button中的onCilck的属性关联起来了
    public void onCanGoBack(View view){
        Toast.makeText(this,String.valueOf(webView.canGoBack()),Toast.LENGTH_SHORT).show();
    }
    public void goBack(View view){
        webView.goBack();
    }
    public void onCanGoForward(View view){
        Toast.makeText(this,String.valueOf(webView.canGoForward()),Toast.LENGTH_SHORT).show();
    }
    public void goForward(View view){
        webView.goForward();
    }
    public void onCanGoBackOrForward(View view){
        int steps= Integer.valueOf(((EditText)findViewById(R.id.steps)).getText().toString());
        Toast.makeText(this,String.valueOf(webView.canGoBackOrForward(steps)),Toast.LENGTH_SHORT).show();
    }
    public void onGoBackOrForward(View view){
        int steps= Integer.valueOf(((EditText)findViewById(R.id.steps)).getText().toString());
        webView.goBackOrForward(steps);
    }
    public void onClearHistory(View view){
        webView.clearHistory();
    }

好啦,关于WebView的基础用法就说到这里,下个文章,我会继续深挖WebView的使用方法,感谢各位客官的支持!!

上一篇下一篇

猜你喜欢

热点阅读