我有一个拥有WebView的Android活动,并且我有一个包含局部变量marks
的页面。当用户获得正确的答案时,本地变量将增加。在网页中,有一个称为exit
的按钮,该按钮应该关闭网页并返回Android中的活动,并且它也应将局部变量marks
带回活动。我想询问如何在网页中完成"退出"按钮以关闭页面并使用JavaScript返回本地变量,以及Android中的活动如何从网页中接收本地变量。
我在Android中的活动:
private WebView webview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
webview = new WebView(this);
webview.getSettings().setJavaScriptEnabled(true);
try {
webview.setWebViewClient(new WebViewClient());
webview.loadUrl("file:///android_asset/index.html");
}
catch(Exception ex)
{
ex.printStackTrace();
}
setContentView(webview);
}
我的退出按钮是DIV:
<div class="exit" onclick="finish()">Exit</div>
我将使用finish()
函数返回变量并关闭网页回到Android中的活动。
function finish() {}
通知主机应用程序已完成加载。然后致电onPageFinished()
webview.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
// do your stuff here
}
});
源
您可以做一件事..在出口呼叫的任何网址中WebView。在活动中
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
// parse the url here to get marks
}
});
在OnCreate中注册WebView的JavaScriptInterface:
this.webview.addJavascriptInterface(new MyJSInterface(this), "Android");
在您的活动中实现setCount方法:
public void setCount (int count) {
//do what ever you want with count
}
使新的JavaScriptInterface类:
public class MyJSInterface {
private YourActivity yourActivity = null;
public MyJSInterface (YourActivity yourActivity) {
this.yourActivity = yourActivity;
}
@JavascriptInterface
public void invoke (int count) {
this.yourActivity.setCount(count);
}
}
和javaScript:
function finish(marks) {
if (Android !== undefined) {
if (Android.invoke !== undefined) {
Android.invoke(marks);
}
}
}