![](/img/trans.png)
[英]Ionic-5 app is closing instead back to previous page on click of hardware back button
[英]Ionic Capacitor hardware back button is automatically closing the app
我当前的设置是:
@capacitor/core: 3.0.0, @ionic-native/core: 5.0.7
我正在尝试将我的应用程序的行为更改为不关闭应用程序,而是将 go 返回到导航堆栈中。 据我所知,在我将 Capacitor 升级到 3.0.0 之前,Android 设备上的硬件后退按钮不会自动关闭应用程序
但是,让我感到困惑的是,我如何拥有绝对 0 代码来处理后退按钮功能,并且从我在网上搜索的所有内容来看,默认情况下后退按钮什么都不做,而不是默认自动关闭应用程序(就像我的一样)正在做)。 我搜索了所有项目文件,寻找与“平台”、“后退按钮”和“App.Exit”有关的任何内容,但找不到任何可能导致应用程序关闭的代码。
我尝试使用以下代码订阅后退按钮按下事件,但它从未运行过。 该应用程序关闭而不是显示警报对话框。 我已将优先级从 0、10 和 99 更改(所有优先级都列在 Ionic 文档中)
this.platform.backButton.subscribeWithPriority(10, () => {
alert('Back button pressed!');
});
所以,意识到这一点后我觉得有点傻,但这是因为我必须运行以下命令,因为我在升级 Capacitor 时显然没有更新它们。 确保您的所有插件都已完全更新,您的可能与我的不同。
npm install @capacitor/app
npx cap sync
安装电容器应用程序。
npm install @capacitor/app
导入它。
import { App as CapacitorApp } from '@capacitor/app';
如果可以返回 go,则添加回侦听器,然后我们可以推回或退出应用程序。
CapacitorApp.addListener('backButton', ({canGoBack}) => { if(.canGoBack){ CapacitorApp;exitApp(). } else { window.history;back(); } });
我遇到了同样的问题,我尝试安装这里所说的所有插件
npm install @capacitor/app @capacitor/haptics @capacitor/keyboard @capacitor/status-bar
安装完成后,我仍然收到错误消息。 我的 PushNotifications 插件也无法正常工作。
我的问题是我忘记从MainActivity.java
中删除OnCreate
方法。 因此,如果您在安装插件后仍有问题,请尝试删除OnCreate
方法,使您的MainActivity.java
看起来像这样:
public class MainActivity extends BridgeActivity {}
在这里查看更多。
它还修复了我的 PushNotifications 插件。
如果我理解正确,如果您有任何未正确注册的插件,就会导致这种错误。 这个答案也帮助了我。
您需要使用以下代码来处理 Ionic 应用程序中的硬件后退按钮:
//back button handle
//Registration of push in Android and Windows Phone
let lastTimeBackPress: number = 0;
let timePeriodToExit: number = 2000;
platform.registerBackButtonAction(() => {
//Double check to exit app
if (new Date().getTime() - lastTimeBackPress < timePeriodToExit) {
//this.platform.exitApp(); //Exit from app
this.appMinimize.minimize().then(() => {
console.log('minimized successfully');
});
} else {
this.toastCtrl.create({
message: this.translate.instant('EXIT_APP_MESSAGE'),
duration: 3000,
position: 'bottom'
}).present();
lastTimeBackPress = new Date().getTime();
}
});
我有同样的问题,将@capacitor/app 添加到我的应用程序中用于调试目的。 问题是,当我构建发布应用程序时,它仍然会关闭应用程序。
- - 编辑 - -
我通过构建一个全新的 Ionic 应用程序(所有内容的最新版本)然后复制我的代码来解决这个问题。 我认为它确实与 Ionic 和 Capacitor 软件包的安装版本有关
https://stackoverflow.com/a/69084017/19086322
这篇文章对我来说真的很好!
在这篇文章之前我做了这些命令并且在它工作之后:
npm install @capacitor/app
npx cap sync
对于 android:
import android.webkit.WebView;
import com.getcapacitor.BridgeActivity;
public class MainActivity extends BridgeActivity {
//in my case I call it the JS function when I press the back button
@Override
public void onBackPressed() {
WebView webView = getBridge().getWebView();
webView.loadUrl("javascript:pressBack()");
// in Index.html create tag
// <script type="text/javascript">
//function pressBack(){
// alert('yes!!')
//} </script>
return;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.