如何以编程方式触发cordova的backbutton事件

6tqwzwtp  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(171)

我正在开发一个基于jQuery移动的的phonegap应用程序。我尝试在我的应用程序中放置一个按钮,其行为类似于Android设备上的后退按钮。我不希望只是一个history.back(),但我希望有完全相同的行为,意味着在没有附加处理程序时返回,并在事件backbutton附加了一个处理程序时执行该处理程序。

换句话说,我想在软件中模拟硬件后退按钮(行为完全相同)

我试过这些密码,没有成功:

$("#backbtn").click(function(){
    var backButtonEvent = document.createEvent('Events');
    backButtonEvent.initEvent('backbutton', false, false);
    document.dispatchEvent(backButtonEvent);
});

我能怎么办?

htrmnn0y

htrmnn0y1#

在mainActivity类中导入javascript接口包

import android.webkit.JavascriptInterface;

在MainActivity类的onCreate方法中添加JavaScript接口

super.appView.addJavascriptInterface(new JSInterface(), "sampleproj");

然后定义javascript接口

public class JSInterface{
       @JavascriptInterface
       public void dispachBackKey() {
            dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
            dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
       }
}

现在调用javascript中的本机方法

window.sampleproj.dispachBackKey();
zzwlnbp8

zzwlnbp82#

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady(){
    var backButtonElement = document.getElementById("backbtn");
    backButtonElement .addEventListener("click", buttonCallBack, false);
}

function buttonCallBack(){
    document.addEventListener("backbutton", onBackButton, false);
}
function onBackButton(){
   // write your stuff
}

尝试上面的代码,它会工作

相关问题