2012-04-12 76 views
1

我试图将现有phonegap应用程序(iOS/Android)移植到WP7。一切正常,除了处理“返回”按钮的代码。当前有一个后退按钮处理程序,如果逻辑请求它,它会重新加载页面,或者当用户处于“第一个”页面时关闭应用程序。Programmaticaly在WP 7上关闭phonegap应用程序芒果

代码:

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

不幸的是,althought,更新逻辑的作品,我无法关闭应用程序。

回答

-1

似乎与目前的PhoneGap实现不可能添加回按钮处理程序,并仍然允许应用程序关闭后退按钮。

在CordovaView.xaml.cs

很少黑客解决了这一成的PhoneGap,通过改变page_BackKeyPress方法更改,如果(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内部。

2

你不能在wp7上强行退出应用程序。 这是在Wp7的设计准则。

让用户按回去,如果您想让他退出,请不要取消它。

+0

我不确定电话事件处理程序是否可能。至少我还没有找到一种方法来禁止后退按钮的默认处理程序。 – PiRX 2012-04-12 13:05:36

+0

你不能像我在jQuery/HTML中那样“返回true”吗? – TDaver 2012-04-12 13:12:19

+0

你能指点我看看,看看你在说什么吗?谢谢! – PiRX 2012-04-18 07:17:03

-1

要退出应用程序,无论页面您现在的位置:

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

注意:这适用于Windows Phone 7,不确定PhoneGap ... – Dante 2012-04-12 13:06:55

+0

这是Windows Phone代码,而不是PhoneGap! – 2012-04-12 13:38:01

0

像由@TDaver提到,Windows Phone应用程序并不意味着关闭。试图关闭它们是违反开发者准则的,应用程序可能会被拒绝。

只是让默认导航堆栈机制照顾它。