WebView加载网页以及处理里面的超链接点击事件

来源:互联网 发布:淘宝开店拍照 编辑:程序博客网 时间:2024/05/16 05:57

setWebChromeClient主要处理解析,渲染网页等浏览器做的事情

WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 


public class MainActivity extends Activity {

private Context context;
private WebView webView;
private String weburl1 = "http://4004.wuurl.com/";
private String weburl2 = "http://act.uniny.com/qiman160524?ismobile=1&mt=10.1.r79139";
private String weburl3 = "https://www.baidu.com/";
private String weburl4 = "file:///android_asset/newfile.html";// 本地html
final Activity activity = this;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_main);
context = this;
initview();


// setpagedata1();
setpagedata2();


}


private void initview() {
// TODO Auto-generated method stub
webView = (WebView) findViewById(R.id.webView1);


}


private void setpagedata1() {
// TODO Auto-generated method stub
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) { // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边
view.loadUrl(url);
return true;
}
});
webView.loadUrl(weburl1);


}


private void setpagedata2() {
// TODO Auto-generated method stub
webView.getSettings().setJavaScriptEnabled(true);

webView.getSettings().setDomStorageEnabled(true);// 允许加载地图

webView.setDownloadListener(new MyWebViewDownLoadListener()); //通过实现自己的DownloadListener来实现文件的下载

webView.setWebChromeClient(new WebChromeClient() {//这是加载进度条的方法
@Override
public void onProgressChanged(WebView view, int progress) {
// TODO Auto-generated method stub
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
if (progress == 100)
activity.setTitle(R.string.app_name);
}
});


webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) { // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边
Log.i("TAG", url);
// view.loadUrl(url);
if (openWithWevView(url)) {//如果是超链接,执行此方法
view.loadUrl(url);
} else {
// Uri uri = Uri.parse(url); // url为你要链接的地址
// Intent intent = new Intent(Intent.ACTION_VIEW, uri);
// startActivity(intent);
}
return true;
}
});
webView.loadUrl(weburl3);


}


public boolean onKeyDown(int keyCode, KeyEvent event) {//处理webview的点击回退事件
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack(); // goBack()表示返回WebView的上一页面
return true;
}
return super.onKeyDown(keyCode, event);
}


protected boolean openWithWevView(String url) {//处理判断url的合法性
// TODO Auto-generated method stub
if (url.startsWith("http:") || url.startsWith("https:")) {
return true;
}
return false;

}


private class MyWebViewDownLoadListener implements DownloadListener{


@Override
public void onDownloadStart(String url, String userAgent, String arg2,
String mimetype, long contentLength) {
// TODO Auto-generated method stub
Uri uri = Uri.parse(url); // url为你要链接的地址
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);


}





}


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


     <WebView
            android:id="@+id/webView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />


</RelativeLayout>

2 0