Android WebView 的使用

WebView 有两个非常重要的辅助类,WebViewClient和WebViewChromeCient,先介绍这两个类的用区别

WebViewClient主要帮助WebView处理各种通知、请求事件的.

  • onLoadResource

  • onPageStart

  • onPageFinish

  • onReceiveError

  • onReceivedHttpAuthRequest

WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度.

  • onCloseWindow
    关闭WebView

  • onCreateWindow()

  • onJsAlert
    WebView上alert无效,需要定制WebChromeClient处理弹出

  • onJsPrompt

  • onJsConfirm

  • onProgressChanged

  • onReceivedIcon

  • onReceivedTitle

代码:


public class MainActivity extends AppCompatActivity {

    private WebView mWvContent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWvContent = (WebView) findViewById(R.id.id_wv_content);
        mWvContent.loadUrl("http://sina.com.cn"); // 访问网页

        // 获取设置
        WebSettings settings = mWvContent.getSettings();

        // 设置支持JavaScript脚本
        settings.setJavaScriptEnabled(true);
        // 支持文件访问
        settings.setAllowFileAccess(true);
        // 支持缩放
        settings.setBuiltInZoomControls(true);
        settings.setSupportZoom(true);

        // 帮助WebView处理各种通知和请求事件
        mWvContent.setWebViewClient(new WebViewClient() {

            // 是在浏览器中跳转还是在此WebView中跳转
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }


            // 加载页面资源时调用
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                Toast.makeText(MainActivity.this, "onPageStarted: " + url, Toast.LENGTH_SHORT).show();
            }
        });


        // 辅助WebView处理JS事件
        mWvContent.setWebChromeClient(new WebChromeClient() {

            // 设置网页进度条
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
            }


            // 获取网页的标题
            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
            }


            // 获取JS弹窗时的信息
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
                return true;
            }


            // 获取JS输入框的信息
            @Override
            public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
                return super.onJsPrompt(view, url, message, defaultValue, result);
            }


            // 获取JS的确认框
            @Override
            public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
                return super.onJsConfirm(view, url, message, result);
            }
        });


    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值