- 利用Android自带的浏览器进行联网:
- Uri uri=Uri.parse(Url);
Intent intent=new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
- Uri uri=Uri.parse(Url);
- WebView
- 在应用中加入WebView时候,只需要在布局中加入WebView属性就可以了
- 加载页面使用loadUrl方法,就是,webView.loadUrl("http://lol.qq.com"),如果是本地的Html文件的话,就是webView.loadUrl("file:*/assets/xx.html"),本地文件存放在assets文件中;如果你点击加载好的网页没有相应的话呢,有可能是失去了焦点,使页面获得焦点的方法是:webView.requestFocus();
- 获取网络访问权限:<uses-permission android:name="android.permission.INTERNET"/>
- 我们点击WebView中页面的链接时候,都是由默认的浏览器来打开并加载URL的,不过,我们可以覆盖这个行为:webView.setWebViewClient(new WebViewClient());并且复写方法shouldOverrideUrlLoading();
- 在WebView中使用Javascript
- 如果你想加载在WebView中的web页面使用Javascript,就需要在WebView中启用Javascript。启用JavaScript可以通过WebView中带有的WebSettings来启用它。可以通过getSettings来获取WebSettings的值,然后通过setJavaScriptEnable来启用Javascript;
-
- WebView webView=findViewById();
- WebSettings webSettings=webView.getSettings();
- webSettings.setJavaScriptEnable(true);
- 后退与前进
- 我们之前,你按返回键,他就直接退出程序了,但是,当WebView覆盖了URL加载,它会自动生成历史访问记录,你可以通过goBack(),goForward()向前,向后来访问已经访问过的站点;
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
//返回值是ture则是,在WebView中打开,false则是第三方浏览器打开
Log.d("test", "网址:"+webView.getUrl()); - return super.shouldOverrideUrlLoading(view, url);
- }
- 返回之前网页
-
public boolean onKeyDown(int keyCode, KeyEvent event) { if((keyCode==KeyEvent.KEYCODE_BACK)){ Toast.makeText(this,webView.getUrl(),Toast.LENGTH_LONG).show(); //因为网页是显示在WebView上面的,所有我们的WebView是有记录的。 if (webView.canGoBack()){ webView.goBack();//返回上一个界面 return true; }else{ System.exit(0);//退出程序 } } return super.onKeyDown(keyCode, event); }
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- 加载过程
- 有些网页可能加载缓慢,所以我们需要去判断页面的加载过程,制作进度条给予用户良好的体验效果。
- //启用JavaScript
private void javascript(){
WebSettings webSettings=webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//加载过程
/**
* 加载显示条的是设置
* newProgress是0-100的整数 ,可以作为Progress的数值
*/
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
closeProgerss();
} else {
openProgerss( newProgress);
}
}
});
}
private void openProgerss(int newProgress) {
if (progressDialog==null){
progressDialog=new ProgressDialog(MainActivity.this);
progressDialog.setTitle("正在加载");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgress(newProgress);
progressDialog.show();
}else{
progressDialog.setProgress(newProgress);
}
}
private void closeProgerss() {
if (progressDialog!=null&&progressDialog.isShowing()){
progressDialog.dismiss();
progressDialog=null;
}
}
- WebView缓存的运用
-
- 优先使用缓存
-
- webView.getSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
- 不使用缓存
-
- webView.getSettings.setCacheMode(WebSettings.LOAD_CACHE_NO_CACHE );