WebView控件中常用的调用函数

本文详细介绍了在Android应用中如何使用WebView控件加载网页,并通过WebChromeClient和WebViewClient处理JavaScript对话框、网页标题、加载进度以及链接跳转等事件,确保用户体验的顺畅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*
 * WebView 主要用来加载网页的控件
 */
public class MainActivity extends AppCompatActivity {
    private WebView wv;
    private ProgressBar progressBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wv= (WebView) findViewById(R.id.wv);
        progressBar= (ProgressBar) findViewById(R.id.progressBar);



        //允许js执行 如果访问的html页面中存在JavaScript脚本语言  webview中需要设置支持
//        WebSettings settings=wv.getSettings();
//        settings.setJavaScriptEnabled(true);
        wv.getSettings().setJavaScriptEnabled(true);
        /*
        WebChromeClient 主要处理解析 渲染网页等浏览器操作的事情
        WebChromeClient 帮助webview处理JavaScript的对话框  网站的图标 标题 加载进度等
         */
        wv.setWebChromeClient(new WebChromeClient());
        wv.setWebChromeClient(new WebChromeClient(){
            //默认webviewalert弹不出来的   onJsAlert处理alert对话框
            @Override
            public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.mipmap.ic_launcher);
                builder.setMessage(message);
                builder.setTitle("提示:");
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        result.confirm();
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        result.cancel();
                    }
                });
                builder.create().show();
                return true;
            }
            //设置应用程序标题
            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
            }

            @Override
            public void onReceivedIcon(WebView view, Bitmap icon) {
                super.onReceivedIcon(view, icon);
            }

            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                MainActivity.this.setTitle("Loading....");
                if(newProgress==100){
                    MainActivity.this.setTitle("Loading ok");
                }
            }
        });

        //点击网页中的超链接时不弹出浏览器的窗口 在webview控件中加载url
        wv.setWebViewClient(new WebViewClient());
        /*
        WebViewClient 帮助webview处理各种通知、请求事件等操作
         */
        wv.setWebViewClient(new WebViewClient(){
            //点击webview中的链接 报告错误信息
            @Override
            public void onReceivedError(WebView view, WebResourceRequest request,
                                        WebResourceError error) {
                Toast.makeText(MainActivity.this,error.getDescription().toString(),
                        Toast.LENGTH_LONG).show();
            }
            //表示事件开始载入页面时调用 例如:可以设置一个loading...的界面  告诉用户程序正在加载
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }
            //表示页面加载完成时回调的函数
            @Override
            public void onPageFinished(WebView view, String url) {
                progressBar.setVisibility(View.GONE);
            }
            //当加载的网页需要重定向回调该函数   true表示由主程序控制界面加载
            //false表示webview自己接受webClient的实例进行控制
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                wv.loadUrl(url);
                return true;
            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值