WebView控件中常用的调用函数

来源:互联网 发布:推荐健身房的软件 编辑:程序博客网 时间:2024/06/08 05:03
* * 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;            }        });
0 1