在android开发中,有时候为了节省时间,可以使用网页做成的页面,集成到app中。这就牵扯到一个问题。我用自定义的webview显示网页之后,如何接受到网页的参数退出这个个页面。因为你如果不在网页上处理好这个问题,你在网页中跳转之后再按android手机里面的返回键就会退出此activity,并不是我们要的返回到上一个页面。那怎么解决这个问题呢。看下面的代码:
网页中的
<div data-role="header" data-position="fixed" role="banner" class="ui-header ui-bar-inherit ui-header-fixed slidedown">
<a href="javascript:window.someThing.setSmething('back')" data-role="button" role="button">返回</a>
<h1 class="ui-title" role="heading" aria-level="1">民生服务</h1>
</div>
这是个在网页中定义的一个div层,功能就是处理button点击事件,也就是app中的返回事件。注意红色字体,最关键的代码是这一行。把他添加到需要定义返回按钮的地方就可以了。然后再来看看app中如何处理。
android中:
WebView myView = (WebView) findViewById(R.id.webview); //获取到webview这个控件,其他的功能我就不说了,需要啥自己添功能。
@JavascriptInterface
public void setSmething(String some) {
if (some.equals("back")) {
// Intent myint = new Intent();
// myint.setClass(ActivityWebBrowser.this, MainActivity2.class);
// startActivity(myint);处理自己接受到参数之后的操作
ActivityWebBrowserB.this.finish();
}
}
这样就可以了。再说一下android4.2及以上版本使用此方法不能够正常接受到参数的原因:Android4.2 以前WebView 提供了javascript 调用Java代码的方法,会造成很大的安全漏洞。Android官方在API17后,限制javascript代码只能调用声明了@JavascriptInterface 注解的Java方法。所以你必须要给每个可供js代码调用的Java方法加一个@JavascriptInterface接口。当然了,android4.2以下的就没必要了