上一篇文章来自android studio webview get data and onfinish。我实际上无法从那些答案中得到我想要的东西。也许我应该更清楚地问它。我实际上使用webview来加载内容页面。然后在内容页面中,有一些链接也是我自己创建的本地html。所以流程就像
android活动 - > webview - >内容页面 - >游戏页面。
我实际上想要在游戏页面中检索本地变量marks
。所以我创建了一个exit
按钮,用于关闭页面并返回到android活动,并将marks
带回到android活动。
所以我自己搜索了一些信息,发现window.close()
没有用。所以我更改了当前的URL以指示单击了退出按钮。然后从URL中提取marks
并将其存储在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.loadUrl("file:///android_asset/index.html");
webview.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url.contains("?marks=")){
finish();} // close activity
else{
view.loadUrl(url);}
return true;
});
}
catch(Exception ex)
{
ex.printStackTrace();
}
setContentView(webview);
}
我的退出按钮是div:
<div class="exit" onclick="finish()">Exit</div>
我将使用finish()
函数返回变量并将网页关闭回android中的活动。
function finish() {
document.location.href= window.location.href +"?marks=" + marks;
}
答案 0 :(得分:0)
好的,我认为问题已经解决了,因为webview.loadUrl
应放在最后。
webview.setWebViewClient(新的WebViewClient()
webview.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url.contains("?marks=")){
finish();} // close activity
else{
view.loadUrl(url);}
return true;
});
webview.loadUrl("file:///android_asset/index.html");