**赏金两天后到期。回答此问题可获得+100声望奖励。Nomam正在寻找一个可靠来源的答案。
我正在使用cordova和android的inappbrowser插件
https://github.com/apache/cordova-plugin-inappbrowser
我试图在java文件中控制android的硬件后退按钮
inappbrowserdialog.java文件
public void onBackPressed() {
if (this.inAppBrowser == null) {
this.dismiss();
} else {
if (this.inAppBrowser.hardwareBack() && this.inAppBrowser.canGoBack()) {
// this.inAppBrowser.goBack();
} else {
// this.inAppBrowser.closeDialog();
}
}
}
我不希望它“goback”或“closedialog”,我希望它“hide”,就像您可以在cordova javascript端调用它一样
https://github.com/apache/cordova-plugin-inappbrowser#inappbrowserhide
ref.hide();
隐藏是理想的,这样我可以调用。显示,如果我想不加载整个页面,这是会发生什么,如果我只是关闭它。
我正在寻找一个java命令,例如
this.inAppBrowser.hide();
但我好像找不到。
更新
因此,链接到codrova.hide javascript的java代码在这里
https://github.com/apache/cordova-plugin-inappbrowser/blob/8bdbd18d1619e25cf8bdedadf6448ef40b21ea7c/src/android/inappbrowser.java#l329-l341级
else if (action.equals("hide")) {
this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (dialog != null && !cordova.getActivity().isFinishing()) {
dialog.hide();
}
}
});
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK);
pluginResult.setKeepCallback(true);
this.callbackContext.sendPluginResult(pluginResult);
}
我就是不知道如何从java back按钮函数调用这个java函数。
1条答案
按热度按时间72qzrwbm1#
我看了源代码,确认插件没有暴露
dialog
阻止您直接与之交互的成员。一种方法是通过反射将其暴露出来,但这对我来说似乎有点刻薄。您可以通过调用
execute
在插件上。为了避免出现任何意外问题,我们需要提供CordovaArgs
以及CallbackContext
示例。CordovaArgs
很容易伪造,但是CallbackContext
不应与实际的webview交互并尝试调用js。所以我创建了一个 Package 器,当调用它时它什么也不做:然后,为了从代码中调用这些方法,可以如下调用execute。我是这么想的
this.inAppBrowser
是的示例InAppBrowser
: