Bewerken: deze knipbeurt werkte op het einde. Ik had dit eerder geprobeerd, maar ondervond een scopingprobleem met mijn javascript. Ik had appBack() gedefinieerd in document.onready. Eenvoudig die functie opnieuw inscannen naar * venster. * AppBack = function (). Ik heb het bedrijf gedaan. Ik hoop dat dit iemand helpt.
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
WebView.loadUrl("javascript:appBack()");
return true;
}
return super.onKeyDown(keyCode, event);
}
In een webview-applicatie wordt de back-navigatie afgehandeld met een aangepaste JS-functie appBack() Ik heb geprobeerd een manier te vinden om de fysieke fysieke back-knop te onderscheppen en in plaats daarvan die javascript-functie aan te roepen. Hier is mijn activiteitenbestand. Het is erg basic, stelt een webview in en luistert naar de klik op de back-knop. Momenteel wanneer de gebruiker op deze fysieke terugknop klikt, wordt mWebView.goBack() uitgevoerd. Dat is waar ik graag JavaScript zou willen uitvoeren: appBack ()
package com.stgeorgeplc.app;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
public class StGeorgePLCliteActivity extends Activity {
/** Called when the activity is first created. */
WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.loadUrl("file:///android_asset/www/index.html");
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}