【发布时间】:2013-03-08 03:11:43
【问题描述】:
在我的 webview 中,我在 webViewClient 方法中获取所有 url
public boolean shouldOverrideUrlLoading(WebView view, String url) {}
如果 url 来自用户点击,我想将 url 扔给其他应用程序。否则webview会自行加载url。但是我无法区分它们。我该怎么办?
感谢您的帮助!
【问题讨论】:
在我的 webview 中,我在 webViewClient 方法中获取所有 url
public boolean shouldOverrideUrlLoading(WebView view, String url) {}
如果 url 来自用户点击,我想将 url 扔给其他应用程序。否则webview会自行加载url。但是我无法区分它们。我该怎么办?
感谢您的帮助!
【问题讨论】:
我按照How can I get onclick event on webview in android?中的方法。
有一些使用dispatchTouchEvent Android singleTap/OnClick in WebView的替代方法
Boolean changedUrl = false;
String currentUrl = null;
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
changedUrl = false;
currentUrl = webView.getUrl();
}
// change either onPageStarted or shouldOverrideUrlLoading
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if(changedUrl && !url.equals(currenturl)) {
// page has been clicked
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
if(changedUrl && !url.equals(currentUrl)) {
// page has been clicked
return true;
}
return false;
}
});
webView.setOnTouchListener( new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getId() == R.id.webView && event.getAction() == MotionEvent.ACTION_DOWN){
changedUrl = true;
}
return false;
}
});
【讨论】: