您的位置:首页 > 移动开发

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

2016-06-15 16:49 507 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  webview