难点1:
在混搭应用中,用户按黑莓返回键(BlackBerry back button),其用意不是要退出程序,而是要返回上一个html page。
解决办法:
Java代码中,在keyChar()方法中侦测黑莓键盘操作,如果按了黑莓返回键(Escape),那么就调用BrowserField字段里面网页的JavaScript 方法closeMyPage()
protected boolean keyChar(char key, int status, int time) {
boolean retVal = false;
//alert("key pressed");
if(key == Characters.ESCAPE){
closePage();
retVal = true; //返回true值表示这个enter键事件被处理过了,不再需要其他程序处理
}
return retVal;
}
public void closePage() {
String script="closeMyPage();";
// run javascript from code
ScriptEngine se = browserField.getScriptEngine();
se.executeCompiledScript(se.compileScript(script), null);
}
难点2:
如果混搭应用中采用了JQuery Mobile,那么用户是要返回上一个JQuery page。
解决办法:JavaScript中根据page id使用JQuery Moibile进行页面的导航
<script type="text/javascript">
function closeMyPage()
{
mypage = $.mobile.activePage.attr('id');
if (mypage == 'mylocation') {
$.mobile.changePage('#home');
}
return false;
}
</script>
参考:
难点1的解决:黑莓上Java代码和JavaScript代码的相互驱动