离子电容器硬件后退按钮自动关闭应用程序

kas*_*dev 6 android typescript ionic-framework angular

我目前的设置是:

@电容/核心:3.0.0,@ionic-native/核心:5.0.7

我正在尝试更改我的应用程序的行为,以不关闭应用程序,而是返回导航堆栈。据我所知,在我将 Capacitor 升级到 3.0.0 之前,Android 设备上的硬件后退按钮不会自动关闭应用程序

不过让我感到困惑的是,我如何拥有处理后退按钮功能的绝对 0 代码,并且从我在网上搜索的所有内容来看,后退按钮默认情况下什么都不做,而不是自动关闭应用程序作为默认值(就像我的似乎正在做)。我已经在所有项目文件中搜索了与“平台”、“backButton”和“App.Exit”有关的任何内容,但找不到任何可能导致应用程序关闭的代码。

我尝试使用以下代码订阅后退按钮按下事件,但从未运行过。应用程序关闭而不是显示警报对话框。我已将优先级从 0、10 和 99(Ionic 文档中列出的所有优先级)更改为

this.platform.backButton.subscribeWithPriority(10, () => {
  alert('Back button pressed!');
});
Run Code Online (Sandbox Code Playgroud)

Siy*_*Haq 34

  1. 安装电容器应用程序。

    npm install @capacitor/app

  2. 导入它。

    import { App as CapacitorApp } from '@capacitor/app';

  3. 如果可以返回,则添加返回侦听器,然后我们可以返回或退出应用程序。

    CapacitorApp.addListener('backButton', ({canGoBack}) => {
      if(!canGoBack){
        CapacitorApp.exitApp();
      } else {
        window.history.back();
      }
    });
    
    Run Code Online (Sandbox Code Playgroud)

  • @Mr Khan 检查 https://capacitorjs.com/docs/apis/app 以获得“AndroidManifest.xml”所需的额外配置 (2认同)

kas*_*dev 7

所以,意识到这一点后我觉得有点傻,但这是因为我必须运行以下命令,因为我显然在不久前升级 Capacitor 时没有更新它们。确保您的所有插件都已完全更新,您的可能与我的不同。

npm install @capacitor/app
npx cap sync
Run Code Online (Sandbox Code Playgroud)

  • 没关系,我的问题也解决了。我忘记更新 @capacitor/cli 。这就是为什么后退按钮在我的情况下不起作用的原因。@ZXERSTON,请确保更新所有电容器包,例如:“@capacitor/android”:“^3.0.0”,`“@capacitor/app”:“^1.0.0”,“@capacitor/core”:“ ^3.0.0", "@电容/触觉": "^1.0.0", "@电容/键盘": "^1.0.0", "@电容/网络": "^1.0.0", "@电容器/状态栏": "^1.0.0", "@capacitor/cli": "^3.0.0" ` (2认同)

小智 5

我遇到了同样的问题,我尝试安装所有插件,就像这里所说的那样

npm install @capacitor/app @capacitor/haptics @capacitor/keyboard @capacitor/status-bar
Run Code Online (Sandbox Code Playgroud)

我安装完成后,仍然出现这个错误。我的 PushNotifications 插件也无法正常工作。

我的问题是我忘记从 中删除该OnCreate方法MainActivity.java。因此,如果安装插件后仍然存在问题,请尝试删除OnCreate方法,这样您的MainActivity.java看起来像这样:

 public class MainActivity extends BridgeActivity {}
Run Code Online (Sandbox Code Playgroud)

在这里查看更多内容。

它还修复了我的 PushNotifications 插件。

如果我理解正确的话,如果你有任何未正确注册的插件,就会导致这种错误。这个答案也对我有帮助。