检测webView的最后一次跳转

来源:互联网 发布:北京网络公关公司 编辑:程序博客网 时间:2024/06/06 09:22

简单的看了一遍API,没有发现webView的方法中有检测最后一次跳转的方法,确实也是,这个也确实不好检测。只要自己简单写一个了,也许会有很多的漏洞,不过勉强还是可以使用的。

原理就是重写WebViewClient中的onPageStarted和onPageFinished方法。

每次Finished的时候调用一个线程来监听若干秒之后是否有新的加载,如果没有,则是最后一次跳转。如果有,则在started方法中停止这个线程。

public class LastJumpWebView extends WebView{Timer timer=new Timer();MyTask task;public LastJumpWebView(Context context) {super(context);setWebViewClient(new MyWebViewClient());setWebChromeClient(new WebChromeClient());}class MyWebViewClient extends WebViewClient{@Overridepublic void onPageFinished(WebView view, String url) {task=new MyTask(url);timer.schedule(task, 1000);super.onPageFinished(view, url);}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {if(task!=null){task.cancel();}super.onPageStarted(view, url, favicon);}@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {// TODO Auto-generated method stubreturn super.shouldOverrideUrlLoading(view, url);}}class MyWebChromeClient extends WebChromeClient{@Overridepublic void onProgressChanged(WebView view, int newProgress) {Log.e("TEST", "进度:"+newProgress);super.onProgressChanged(view, newProgress);}}class MyTask extends TimerTask{String url;public MyTask(String url) {this.url=url;}@Overridepublic void run() {Log.e("TEST", "this is last page, url:"+url);}}}



0 0
原创粉丝点击