美文网首页
Android webview的使用

Android webview的使用

作者: 头发依然在 | 来源:发表于2017-10-19 15:01 被阅读28次
    1.布局就不说了,就一个简单的WebView,主要是java代码:
            WebView wView = (WebView)findViewById(R.id.wv1);     
            WebSettings wSet = wView.getSettings();     
            wSet.setJavaScriptEnabled(true);     
                         
            //wView.loadUrl("file:///android_asset/index.html");    //加载本地html文件
            //wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");//加载本地sd卡内的index.html文件
            wView.loadUrl("http://wap.baidu.com");  //加载指定的url地址
    

    这是简单的加载html文件,不做其他操作。

    2.监听webview,针对不同的情况调用不同的回调

    首先是对webview进行设置

            WebSettings settings = mWebView.getSettings();
            // 设置与Js交互的权限
            settings.setJavaScriptEnabled(true);
            // 设置允许JS弹窗
            settings.setJavaScriptCanOpenWindowsAutomatically(true);
            //设置开启缓存
            //settings.setAppCacheEnabled(false);
            //启用数据库存储
            settings.setDatabaseEnabled(true);
            //启用文档对象数据存储
            settings.setDomStorageEnabled(true);
            //设置图片最后加载
            settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
            //设置加载进来的页面自适应手机屏幕
            settings.setUseWideViewPort(true);
            settings.setLoadWithOverviewMode(true);
            //加载网页
            meWebView.loadUrl(webURL);
            //设置监听事件
            //设置WebChromeClient类
            meWebView.setWebChromeClient(new WebChromeClient() {
    
                //获取网站标题
                @Override
                public void onReceivedTitle(WebView view, String title) {
                }
    
                //获取加载进度
                @Override
                public void onProgressChanged(WebView view, int newProgress) {
                }
            });
            //设置WebViewClient类
            meWebView.setWebViewClient(new WebViewClient() {
                //设置不用系统浏览器打开,直接显示在当前Webview
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    if (url.startsWith("alipays:") || url.startsWith("alipay")) {
                        try {
                            startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));
                        } catch (Exception e) {
                            new AlertDialog.Builder(WebViewActivity.this)
                                    .setMessage("未检测到支付宝客户端,请安装后重试。")
                                    .setPositiveButton("立即安装", new DialogInterface.OnClickListener() {
    
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            Uri alipayUrl = Uri.parse("https://d.alipay.com");
                                            startActivity(new Intent("android.intent.action.VIEW", alipayUrl));
                                        }
                                    }).setNegativeButton("取消", null).show();
                        }
                        return true;
                    }
                    // ------- 处理结束 -------
                    if (!(url.startsWith("http") || url.startsWith("https"))) {
                        return true;
                    }
    
                    view.loadUrl(url);
                    return true;
                }
    
                //设置加载前的函数
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    Logger.i("WebView开始加载···");
                }
    
                //设置结束加载函数
                @Override
                public void onPageFinished(WebView view, String url) {
                    hideLoading();
                    Logger.i("WebView加载完成!");
                }
    
                @Override
                public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                    super.onReceivedError(view, request, error);
                    hideLoading();
                    Logger.i("WebView加载失败!");
                }
            });
            //设置返回键
            meWebView.setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    if (keyCode == KeyEvent.KEYCODE_BACK && meWebView.canGoBack()) {
                        meWebView.goBack();
                        return true;
                    }
                    return false;
                }
            });
    

    相关文章

      网友评论

          本文标题:Android webview的使用

          本文链接:https://www.haomeiwen.com/subject/fopuuxtx.html