Wie man link-URL in Android WebView mit HitTestResult für ein verknüpftes Bild (und nicht die Bild-URL) mit Longclick
Ich versuche, Sie zu fangen webview longclicks, um ein Kontextmenü anzuzeigen. (siehe code unten)
Wenn longclicking ein Bild, bekomme ich immer die Bild-URL als extra (für eine nicht verlinkte Bild mit IMAGE_TYPE und für ein verknüpftes Bild mit SRC_IMAGE_ANCHOR_TYPE).
Aber wie bekomme ich die Link-URL (und nicht die Bild-URL) für ein Bild mit einen hyperlink?
Besten,
Sebastian
mywebview.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) {
final WebView webview = (WebView) v;
final WebView.HitTestResult result = webview.getHitTestResult();
if (result.getType() == SRC_ANCHOR_TYPE) {
return true;
}
if (result.getType() == SRC_IMAGE_ANCHOR_TYPE) {
return true;
}
if (result.getType() == IMAGE_TYPE) {
return true;
}
return false;
}
});
InformationsquelleAutor Sebastian | 2012-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich überprüfte den Quellcode der WebView und es scheint, dass die Bild-uri ist die einzige zusätzliche Daten, die Sie bekommen können, für SRC_IMAGE_ANCHOR_TYPE. Aber nicht böse sein hier habe ich eine quick-and-dirty workaround für Sie:
Habe ich versucht, den code auf einem low-end-Android-2.1-Gerät und ein high-end-Android-4.0-Gerät, beide arbeiten wie ein Charme.
Hinsichtlich
Ziteng Chen
InformationsquelleAutor Ziteng Chen
Keiner der oben genannten Lösungen gearbeitet, für mich auf Android 4.2.2. Also schaute ich in den Quellcode der Standard-android web-browser. Ich extrahierten Lösung für genau dieses problem - get-link-URL aus Bild-link.
Quelle:
https://github.com/android/platform_packages_apps_browser/blob/master/src/com/android/browser/Controller.java
Extrahierten Lösung:
LongClick Hörer:
Handler, um die URL:
tnxt... seine Arbeit.
Das funktioniert wirklich gut für mich, das problem ist nur, dass der handler zu sein scheint, hinter einem link zu jeder Zeit, was Bedeutet, ich wähle eine, und es zeigt den vorherigen link. Und die erste, die gezeigt wird, ist null.
Genial Mann...!!!
InformationsquelleAutor Perry_ml
Ziteng Chen Lösung funktioniert bis zu Android 4.0 (API Level 15), aber für einige Grund der KeyEvent down & up funktioniert nicht in API-LEVEL 16+ (Android 4.1+ JELLY_BEAN). Es nicht das Feuer die WebView ist loadUrl. So hatte ich zu ersetzen, die dispatchKeyEvent mit dispatchTouchEvent. Hier ist der code:
Würden Sie wahrscheinlich warten müssen (verwenden Sie ein AsyncTask), um die mUrl in langsameren Geräten, wo es ist null sofort nach Abgabe des dispatchTouchEvents
Hoffe, es hilft.
InformationsquelleAutor Stang Texan
Ich weiß, das ist ein altes Problem, aber ich kam vor kurzem über dieses Problem. Basierend auf Perry_ml Antwort, ich habe folgende Kotlin-code zu lösen:
Habe ich geschrieben einige Informationen über Sie hier.
InformationsquelleAutor David Pacheco
Statt der Aufruf dieser Funktion
myWebView.requestFocusNodeHref(msg);
ist, versuchen Sie den Aufruf dieser FunktionmyWebView.requestImageRef(msg);
InformationsquelleAutor user3367850