以编程方式关闭WP 7 Mango上的phonegap应用程序

时间:2012-04-12 13:01:33

标签: windows-phone-7 cordova

我试图将现有的phonegap应用程序(iOS / Android)移植到WP7。一切正常,除了处理代码"返回"按钮。目前有后退按钮处理程序,如果逻辑要求,它会重新加载页面,如果用户在第一页"页面,则关闭应用程序。

代码:

if (doLogic) {
  // some update logic
} else  {
  // try to close app
  device.exitApp();
}

不幸的是,虽然更新逻辑有效,但我无法关闭应用程序。

4 个答案:

答案 0 :(得分:2)

您无法强行退出wp7上的应用程序。 它符合Wp7设计指南。

让用户按下,如果你想让他退出,请不要取消。

答案 1 :(得分:0)

像@TDaver提到的那样,Windows Phone应用程序并不打算关闭。试图关闭它们是违反开发指南的,应用程序可能会被拒绝。

让默认的导航堆栈机制来处理它。

答案 2 :(得分:-1)

要退出应用程序,无论您在哪个页面:

 if (NavigationService.CanGoBack)
 {
     while (NavigationService.RemoveBackEntry() != null)
     {
         NavigationService.RemoveBackEntry();
     }
 }

答案 3 :(得分:-1)

似乎使用当前的PhoneGap实现,无法添加后退按钮处理程序,仍然允许应用程序使用后退按钮关闭。

通过更改CordovaView.xaml.cs中的page_BackKeyPress方法,解决了这个问题,很少有黑客入侵PhoneGap

将if(OverrideBackButton)更改为

    string cancel = "false";
    if (OverrideBackButton)
    {
        try
        {
            cancel = CordovaBrowser.InvokeScript("shouldCancelBackButton") as string;
            Console.WriteLine("CancelBackButton response: " + cancel);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception while checking for backbutton cancel into cordova view: " + ex.Message);
        } 

        try
        {
            e.Cancel = cancel == "true"; 
            CordovaBrowser.InvokeScript("CordovaCommandResult", new string[] { "backbutton" });
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception while invoking backbutton into cordova view: " + ex.Message);
        }
    }

现在我可以在页面中添加shouldCancelBackButton JS函数,并基于状态抑制或执行默认的后退按钮处理程序行为。

可能这不是最好的解决方案,但遗憾的是我没有时间熟悉PhoneGap内部。