难点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代码的相互驱动