使用WebView打开指定url网址
这个是通知手机上面的浏览器去打开网址
webView = (WebView) findViewById(R.id.webView); // WebView加载本地资源 // webView.loadUrl("file:///android_asset/example.html"); // WebView加载web资源 webView.loadUrl(url);这个是直接在WebView中打开网址
调用setWebViewClient方法 (new一个 WebViewClient()覆盖里面的 shouldOverrideUrlLoading方法 把返回值改成true )
webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub //返回值是true的时候控制网页在WebView中去打开,如果为false调用系统浏览器或第三方浏览器去打开 view.loadUrl(url); return true; } //WebViewClient帮助WebView去处理一些页面控制和请求通知 });目的:模拟浏览器 浏览网址一样 当浏览到 第二个第三个的时候,按返回键可以返回之前上一个的页面。(如果没有设置 默认会直接退出程序)
//改写物理按键——返回的逻辑 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode== KeyEvent.KEYCODE_BACK) { //Toast.makeText(this, webView.getUrl(), Toast.LENGTH_SHORT).show(); if(webView.canGoBack()) //判断是否能返回 如果是第一个页面 返回false { webView.goBack();//返回上一页面 return true; } else { System.exit(0);//退出程序 } } return super.onKeyDown(keyCode, event); }目的:给用户一个良好的界面效果,当页面在加载的时候,可以有一个进度条对话框显示出来,告诉用户,我正在加载页面。。并且使页面优先使用缓存加载。
WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true);//启用支持js语言 //WebView加载页面优先使用缓存加载 settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); webView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { // TODO Auto-generated method stub //newProgress 1-100之间的整数 if(newProgress==100) { //网页加载完毕,关闭ProgressDialog closeDialog(); } else { //网页正在加载,打开ProgressDialog openDialog(newProgress); } } private void closeDialog() { // TODO Auto-generated method stub if(dialog!=null&&dialog.isShowing()) //判断对话框 是否为null 或者是 正在显示 { dialog.dismiss(); 关闭对话框 dialog=null; } } private void openDialog(int newProgress) { // TODO Auto-generated method stub if(dialog==null) { dialog=new ProgressDialog(MainActivity.this); dialog.setTitle("正在加载"); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setProgress(newProgress); dialog.show(); } else { dialog.setProgress(newProgress); } } });