Ionic 离子电容器硬件返回按钮自动关闭应用程序

6gpjuf90  于 2022-12-09  发布在  Ionic
关注(0)|答案(6)|浏览(160)

我的当前设置是:
@电容器/磁芯:3.0.0,@离子-原生/内核:5.0.7
我正在尝试更改应用的行为,使其不关闭应用,而是返回导航堆栈。据我所知,在我将Capacitor升级到3.0.0之前,Android设备上的硬件后退按钮不会自动关闭应用
让我感到困惑的是,我怎么有绝对0代码来处理后退按钮功能,从我在线搜索的所有内容来看,默认情况下后退按钮什么都不做,不会自动关闭应用程序我已经搜索了所有的项目文件,寻找与“platform”、“backButton”和“App.Exit”,无法找到任何可能导致应用程序关闭的代码。
我尝试使用以下代码订阅后退按钮按下事件,但它从未运行。应用程序关闭,而不是显示警报对话框。我更改了优先级,从0、10和99(所有优先级都在Ionic文档中列出)

this.platform.backButton.subscribeWithPriority(10, () => {
  alert('Back button pressed!');
});
polhcujo

polhcujo1#

所以,意识到这一点后,我觉得有点愚蠢,但这是因为我必须运行下面的命令,因为我显然没有更新他们时,升级电容器一段时间回来.确保你所有的插件都完全更新,你的可能会与我的不同.

npm install @capacitor/app
npx cap sync
rxztt3cl

rxztt3cl2#

1.安装电容器约
npm install @capacitor/app
1.导入它。
import { App as CapacitorApp } from '@capacitor/app';
1.添加回侦听器,如果可以返回,那么我们可以推到后面或退出应用程序。

CapacitorApp.addListener('backButton', ({canGoBack}) => {
  if(!canGoBack){
    CapacitorApp.exitApp();
  } else {
    window.history.back();
  }
});
vecaoik1

vecaoik13#

我有同样的问题,我试图安装所有的插件一样,它说在这里

npm install @capacitor/app @capacitor/haptics @capacitor/keyboard @capacitor/status-bar

在我完成安装后,我仍然得到错误。而且我的PushNotifications插件也不工作。
我的问题是我忘了从MainActivity.java中删除OnCreate方法。所以如果你在安装插件后仍然有问题,试着删除OnCreate方法,这样你的MainActivity.java看起来就像这样:

public class MainActivity extends BridgeActivity {}

在此查看更多信息。
它还修复了我的PushNotifications插件。
如果我理解正确的话,如果你有任何插件没有正确注册,它会导致这种错误。This的答案也帮助了我。

d6kp6zgx

d6kp6zgx4#

https://stackoverflow.com/a/69084017/19086322

这篇文章对我来说真的很好!!

在这篇文章之前,我做了这些命令,之后它的工作:

npm install @capacitor/app                                             
npx cap sync
ar5n3qh5

ar5n3qh55#

您需要使用以下代码来处理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();
    }
});
mjqavswn

mjqavswn6#

我有同样的问题,并添加@电容器/应用程序到我的应用程序工作的调试目的。问题是,当我建立一个发布应用程序,它仍然关闭应用程序。
---编辑---
我修复了这个问题,构建了一个全新的Ionic应用程序(所有东西都是最新版本),然后复制了我的代码。我认为这真的与安装的Ionic和Capacitor软件包版本有关

相关问题