我试图将现有的phonegap应用程序(iOS / Android)移植到WP7。一切正常,除了处理代码"返回"按钮。目前有后退按钮处理程序,如果逻辑要求,它会重新加载页面,如果用户在第一页"页面,则关闭应用程序。
代码:
if (doLogic) {
// some update logic
} else {
// try to close app
device.exitApp();
}
不幸的是,虽然更新逻辑有效,但我无法关闭应用程序。
答案 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内部。