代码之家  ›  专栏  ›  技术社区  ›  Flutterian

Cordova-Angular 4-有没有办法重写android设备后退按钮

  •  0
  • Flutterian  · 技术社区  · 7 年前

    util.js 服务。

    ngOnInit() {
        document.addEventListener('deviceready', (evt) => this.onDeviceReady(evt), false);
        document.addEventListener('resume', (evt) => this.onResumeCall(evt), false);
        document.addEventListener('offline', this.inOfflineMode, false);
        document.addEventListener('online', this.inOnlineMode, false);
        document.addEventListener('backbutton', (evt) => this.onBackKeyDown(evt), false);
        this._config.init();
        this.analyticsService.updateAppOpenCount();
      }
    
    • 在这里,我可以用在另一个服务文件中实现的函数注册backbutton事件。

    2.实用程序.js

    public deviceBackButton(): void {
            if (window.cordova) {
                if (window.location.hash === '#/') {
                   // window.history.back();
                   navigator.app.backHistory();
                    navigator.app.exitApp();
                } else {
                    window.history.back();
                }
            }
    
        }
    

    这是一个后退按钮处理程序函数,在util.js中实现,它只不过是服务。我无法在此服务中注入组件。

    我们有没有其他的工作可以让我们在任何组件或页面上使用cordova和angular4/6重写这个back按钮处理程序?

    目前我可以从第一页返回,但从第二页开始应用程序视图变差。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Flutterian    7 年前

    我已经通过使用HostListener解决了这个问题。。。

    @HostListener('window:popstate') backbuttonpressed() {
        console.log('back button pressed');
      }
    

    使用 HostListener 你必须先导入它。

    import { HostListener } from '@angular/core'
    
        2
  •  0
  •   Saad Mehmood    7 年前

    我可没在科多瓦干过这种事。但我是这么做的。我已经找过科尔多瓦了我找到了这个。当用户按下设备后退按钮时,“backbutton”事件被触发,请尝试为此添加事件侦听器。

    document.addEventListener("backbutton", yourCallbackFunction, false);
    

    https://cordova.apache.org/docs/en/1.6.0/cordova/events/events.backbutton.html

    推荐文章