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

Schreibe einen Kommentar