一,需求前提:
网页上有一个挂机任务,当用户点击手机返回键,home键,菜单键,要通知网页,然后进行一系列操作,然后告知客户端下一步操作
二,首先我们知道js 与android相互调用的方式
1,js掉用android方法
①
webView.addJavascriptInterface(new InJsAndroid(), "injs_android");
②
final class InJsAndroid{
@JavascriptInterface
public void gotoVideo() {
}
}
2,Android调用js方法
① 不带参数
webView.loadUrl("javascript:onHome()");
② 带参数
webView.loadUrl("javascript:onHome('"+outbox+"')");
所以,想要客户端执行操作告诉网页并有回调,最简单最傻瓜式的操作:先调用网页方法执行 2方法,然后网页一系列操作后执行 1方法返回客户端
三,其次定位挂机任务界面,判断挂机界面 ,只在该界面有拦截,有两种方式
① 网页加载的url中添加特殊字符,在客户端shouldOverrideUrlLoading
方法时,判断一下,加个状态值,当点击返回时就以此值做判断
② 加载网页时加一个新方法,同样记录状态值
我们在前进后退页面时都会执行shouldOverrideUrlLoading
方法,这样就可以知道是那个界面了
四,然后设置监听键方式:
打开百度,查到的最多的就是
① onKeyDown()
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return super.onKeyDown(keyCode, event);
}
可惜 该方法里设置只在activity有用,在fragment中根本没这个方法,而且home和menu对应的 KEYCODE_HOME,KEYCODE_MENU
都没作用
② onBackPressed()
@Override
public void onBackPressed() {
if (webView!= null && webView.canGoBack())