WebView加载网页以及处理里面的超链接点击事件
2016-06-15 16:49
555 查看
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>
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>
相关文章推荐
- android WebView组件使用总结
- 解决video标签在安卓webview下无法自动播放问题
- Android webview与js交换JSON对象数据示例
- android中WebView和javascript实现数据交互实例
- Android的webview支持HTML5的离线应用功能详细配置
- Android开发之WebView组件的使用解析
- Android中实现Webview顶部带进度条的方法
- Android WebView控件捕获用户输入的信息
- Android中访问证书有问题的SSL网页的方法
- 基于Android中Webview使用自定义的javascript进行回调的问题详解
- Android webview用法实例简析
- Android编程实现WebView自适应全屏方法小结
- Android编程使WebView支持HTML5 Video全屏播放的解决方法
- Android使用WebView播放flash的方法
- Android中WebView无法后退和js注入漏洞的解决方案
- Android编程实现WebView全屏播放的方法(附源码)
- Android开发之WebView输入框提示解决办法
- Android组件WebView编写有道词典小案例分享
- android webview 中localStorage无效的解决方法
- Android使用原生组件WebView加载网页和数据的方法