Android : Erkennen der Geschichte.zurück() in WebView
Einen button in meinem WebView
wird verwendet, um zu gehen zurück mit der history.back()
JavaScript-Aufruf. Ich verstehe nicht viel von JavaScript, aber nach ein bisschen suchen habe ich herausgefunden, dass wir verwenden können, die addJavascriptInterface()
Methode einer WebView
.
Nun habe ich die Absicht, bis zum Ende meiner Tätigkeit, wenn die Schaltfläche geklickt wird. Ich landete mit etwas dieser Art:
public class MyActivity extends Activity {
private static final String sTag = "MyActivity";
private WebView mWebContent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.browser_page);
mWebContent = (WebView) findViewById(R.id.webContent);
mWebContent.getSettings().setJavaScriptEnabled(true);
mWebContent.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebContent.getSettings().setBuiltInZoomControls(true);
mWebContent.addJavascriptInterface(new JavaScriptInterface(), "history"); //history.back();
Bundle extras = getIntent().getExtras();
if (extras != null) {
mWebContent.loadUrl(extras.getString("URL"));
}
}
public class JavaScriptInterface {
JavaScriptInterface() {
}
public void back() {
Log.v(sTag, "back pressed");
MyActivity.this.finish();
}
}
}
Aber leider, wenn Sie die Taste gedrückt, wird die Aktivität nicht beendet, weder bekomme ich nichts in der Log.
Hier ist der html-Code für den button :
<a href="javascript:void(0);">
<img src="images/btn-go-back.png" onClick="history.back();" border="0" />
</a>
Was mache ich falsch?
Vielen Dank im Voraus.
Edit : wollte Nur klar die Tatsache, dass das ändern des html ist keine option für mich. Ich habe keine macht über die der html-code :). Ich Griff es in die Anwendung.
Edit: Versucht, die änderung history.back()
zu window.history.back()
(lokal), trotzdem keine änderung.
Edit : ich war das Experimentieren von lokal laden von html-zusammenstzung und fand heraus, dass, wenn ich ändern history.back()
zu sagen, so etwas wie android_app.back()
und registrieren meine JavaScriptInterface
durch den Namenandroid_app
es funktioniert gut. Warum ist das so? Bedeutet das, dass wir nicht verwenden können history
zum registrieren einer Schnittstelle? Funktioniert die developer docs erwähnen?
InformationsquelleAutor Arnab Chakraborty | 2011-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen Sie die Navigieren web-Seite der Geschichte Abschnitt dieses Artikels.
Erzählt es komplett über die android webviews.Es erzählt, wie zu machen webviews handle Geschichte.
http://developer.android.com/guide/webapps/webview.html
Hoffe, das hilft.
Hi Aki,Sag mir, wenn Sie möchten, behandeln Sie die Seite navigation in einem webview oder Sie wollen etwas von der android-Seite?
Ich habe gelesen, bearbeitet Ihre Nachricht.Seltsam, dass Sie erwähnt, wenn Sie verändert Ihre javascriptinterface Namen aus der Geschichte zu android_app.Ich habe gegangen durch den developer docs.es gibt nichts auf dieser.
InformationsquelleAutor Sreeram
Versuchen
<a href="#" onclick="window.history.back()"><img src="bla" /></a>
edit: gerade gelesen, die Sie nicht ändern können, den HTML-code .. keine Lösung ..
Nur ein sehr kleiner Kommentar abgeben, wird die API-doc sagt: nicht addJavascriptInterface (), es sei denn, alle den HTML-Code in das WebView von Ihnen geschrieben wurde: link. Ich verstehe, dass möglicherweise nicht eine option sein ...
Nun, es sagt, dass seine gefährlich, wie es kann verwendet werden, von jemandem die Ausführung von bösartigen code in meiner app, aber in meinem Fall, dass jemand einen vertrauenswürdigen Kerl, so ist es nicht wirklich wichtig. By the way, ich habe versucht, es zu verändern
window.history.back()
(Experimentieren lokal), und es funktioniert immer noch nicht.Auf der
a href
oder auf derimg
?geändert
href
zu#
und dieimg
onClick
zuwindow.history.back()
InformationsquelleAutor Bart Blommaerts
Nach viel suchen und Fragen, ich habe schließlich zu dem Schluss gekommen, dass Sie nicht fügen Sie einen java-script-Schnittstelle, mit
addJavascriptInterface (Object obj, String interfaceName)
, mit dem Namen der Schnittstelle alshistory
(oder vielleicht irgendwelche javascript-Schlüsselwort).Vielleicht ist das irgendwo in den developer docs oder manuelle, aber ich konnte es nicht finden obwohl.
InformationsquelleAutor Arnab Chakraborty
Prüfen:
InformationsquelleAutor Mahesh