android webview href,javascript – 当点击链接时,在Android WebView中从锚标签获取href值...

我在WebView中加载网页.网页上有一个链接,桌面上会下载该文件,但在应用程序中,该链接应显示Toast,表示该应用的链接被禁用.

当链接被点击时,我不知道如何从锚标签的href获取值.

Download Audio

有人可以分享一个想法或任何示例代码如何做到这一点.

编辑:1

这是我现在在做什么:

private static final String URL = "http://xx.xxx.com/wp-content/uploads/";

webView.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {

WebView.HitTestResult hr = ((WebView) v).getHitTestResult();

String extra = hr.getExtra();

if (extra != null && extra.startsWith(URL) && extra.endsWith(".mp3")) {

Log.d("WebviewActivity", "Extra: " + extra);

Log.d("WebviewActivity", "Contains URL");

return true;

}

}

return false;

}

});

这种方法的问题是:

当我点击链接,我得到额外的url.在这里工作正常但是,从下次来看,无论我在网站上点击什么,都会收到相同的额外费用.所以即使我点击一个图像后,我点击网址,我得到相同的URL在额外的.不知道我做错了什么或者这是正确的方法.

如果您需要任何细节,请通知我.

编辑:2

private Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

// Get link-URL.

String url = (String) msg.getData().get("url");

// Do something with it.

if (url != null) {

Log.d(TAG, "URL: "+url);

}

}

};

webView.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {

WebView.HitTestResult hr = ((WebView) v).getHitTestResult();

if (hr.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {

Message msg = mHandler.obtainMessage();

webView.requestFocusNodeHref(msg);

}

}

return false;

}

});

webView.loadUrl(mUrl);

}

现在,我得到最后一个action_down事件中点击的URL.如何获取当前的URL?

编辑3(尝试与webviewclient:

private class MyWebViewClient extends WebViewClient {

private static final String URL = "xx.xxx.com/wp-content/uploads/";

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

if (!isFinishing())

mProgressDialog.show();

}

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

mProgressDialog.dismiss();

}

@Override

public void onReceivedError(WebView view, int errorCode,

String description, String failingUrl) {

super.onReceivedError(view, errorCode, description, failingUrl);

Toast.makeText(WebviewActivity.this,

"Please check your internet " + "connection and try again",

Toast.LENGTH_SHORT).show();

}

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

Log.d("xxx", "Url: " + url);

if(url.contains(URL)) {

Log.d("xxx", "Url Contains: " + URL);

return true;

}

return false;

}

}

mMyWebViewClient = new MyWebViewClient();

webView.setWebViewClient(mMyWebViewClient);

当链接被点击时在logcat中输出:

03-01 15:38:19.402 19626-19626/com.xx.xxx D/cr_Ime: [ImeAdapter.java:553] focusedNodeChanged: isEditable [false]

03-01 15:38:19.428 19626-19626/com.xx.xxx D/cr_Ime: [ImeAdapter.java:253] updateKeyboardVisibility: type [0->0], flags [0], show [true],

03-01 15:38:19.428 19626-19626/com.xx.xxx D/cr_Ime: [ImeAdapter.java:326] hideKeyboard

03-01 15:38:19.429 19626-19626/com.xx.xxx D/cr_Ime: [InputMethodManagerWrapper.java:56] isActive: true

03-01 15:38:19.429 19626-19626/com.xx.xxx D/cr_Ime: [InputMethodManagerWrapper.java:65] hideSoftInputFromWindow

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值