1.使用Intent访问网页
1.使用intent 访问网页
String url="http://www.imooc.com/course/list";
Uri uri=Uri.parse(url);
Intent intent=new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);</span>
2.使用WebView
1). 在layout中使用WebView标签
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
2). 注册访问网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
3).两种访问方式:
/*访问本地文件*/
//mweiView.loadUrl("file:///android_asset/hjo.html");
// 当点击没有反应时,是因为webView没有获取焦点 加上WebView.requestFocus() 即可
/*访问web程序*/
mweiView.loadUrl(url);
4).如何在webView内部加载网页而不需要通过第三方浏览器
/*覆盖WebView默认通过第三方或者系统自带浏览器打开网页的行为 使得网页可以自动打开 即:不需要选择用哪一个浏览器打开*/
/*此时 WebView会生成访问历史记录,可以通过goBack(),goForward()返回或向前访问已经访问过的站点*/
mweiView.setWebViewClient(new WebViewClient(){
//复写下面的方法 该方法的返回值决定了是在WebView内部打开网页还是通过第三方浏览器打开的
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//返回true时,在WebView内打开 返回false时 通过第三方浏览器或者系统自带浏览器打开
view.loadUrl(url);//修改返回值 然后返回true即可在WebView内打开网页
return true;
//return super.shouldOverrideUrlLoading(view, url);
}
5).判断webView的加载进度
/*如何判断webView页面的加载过程*/
mweiView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
// super.onProgressChanged(view, newProgress);
if (newProgress==100) {//页面加载完毕
closeDialog(newProgress);//页面加载完成则关闭对话框
}else{//页面继续加载
openDialog( newProgress);//页面还在加载 则打开对话框
}
}
6).支持使用javascript和缓存
/*当需要在WebView中支持使用javascript脚本语言时 需要进行的设置 */
WebSettings webSettings=mweiView.getSettings();
webSettings.setJavaScriptEnabled(true);
/*webView 如何使用缓存 默认情况下webView是不用缓存的 */
// webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//优先使用缓存
7).覆盖WebView默认通过第三方或者系统自带浏览器打开网页的行为,此时 WebView会生成访问历史记录,可以通过goBack(),goForward()返回或向前访问已经访问过的站点
/*改写物理按键 返回的逻辑*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode==KeyEvent.KEYCODE_BACK) {
//此时返回页面时已经不是原来的url 而是通过重定向获取到的页面
//由于重定向的原因 当点击返货不能退出WebView时 可多次点击返回
if (mweiView.canGoBack()) {//如果还能返回 则直接返回
mweiView.goBack();
}else{
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}
运行效果:
以下是完整的代码:
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.HttpAuthHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
private String url="http://www.imooc.com/course/list";
private WebView mweiView;
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Uri uri=Uri.parse(url);
// Intent intent=new Intent(Intent.ACTION_VIEW,uri);
// startActivity(intent);
initView();//注册控件
}
private void initView() {
// TODO Auto-generated method stub
mweiView=(WebView)findViewById(R.id.webview);
/*访问本地文件*/
//mweiView.loadUrl("file:///android_asset/hjo.html");
/*访问web程序*/
mweiView.loadUrl(url);
/*覆盖WebView默认通过第三方或者系统自带浏览器打开网页的行为 使得网页可以自动打开 即:不需要选择用哪一个浏览器打开*/
/*此时 WebView会生成访问历史记录,可以通过goBack(),goForward()返回或向前访问已经访问过的站点*/
mweiView.setWebViewClient(new WebViewClient(){
//复写下面的方法 该方法的返回值决定了是在WebView内部打开网页还是通过第三方浏览器打开的
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//返回true时,在WebView内打开 返回false时 通过第三方浏览器或者系统自带浏览器打开
view.loadUrl(url);//修改返回值 然后返回true即可在WebView内打开网页
return true;
//return super.shouldOverrideUrlLoading(view, url);
}
/**
* 对HTTP请求的处理
*/
@Override
public void onReceivedHttpAuthRequest(WebView view,
HttpAuthHandler handler, String host, String realm) {
// TODO Auto-generated method stub
super.onReceivedHttpAuthRequest(view, handler, host, realm);
}
/**
* 页面开始时需要做的处理
*/
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
/**
* 页面处理完成时 需要做的处理
*/
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}
});//webViveClient的作用:帮助WebView处理一些页面控制和处理通知
/*当需要在WebView中支持使用javascript脚本语言时 需要进行的设置 */
WebSettings webSettings=mweiView.getSettings();
webSettings.setJavaScriptEnabled(true);
/*webView 如何使用缓存 默认情况下webView是不用缓存的 */
// webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//优先使用缓存
/*如何判断webView页面的加载过程*/
mweiView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
// super.onProgressChanged(view, newProgress);
if (newProgress==100) {//页面加载完毕
closeDialog(newProgress);//页面加载完成则关闭对话框
}else{//页面继续加载
openDialog( newProgress);//页面还在加载 则打开对话框
}
}
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);
}
}
private void closeDialog( int newProgress) {
// TODO Auto-generated method stub
if (dialog!=null&&dialog.isShowing()) {//当dialog不为空且正在显示
dialog.dismiss();
dialog=null;
}
}
});
}
/*改写物理按键 返回的逻辑*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode==KeyEvent.KEYCODE_BACK) {
//此时返回页面时已经不是原来的url 而是通过重定向获取到的页面
//由于重定向的原因 当点击返货不能退出WebView时 可多次点击返回
if (mweiView.canGoBack()) {//如果还能返回 则直接返回
mweiView.goBack();
}else{
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}
}