我的问题是如何使用phonegap 2.3退出Windows Phone 8中的应用程序 我使用过" navigatior.app.exit()"但它显示" navigator.app"未定义。
答案 0 :(得分:0)
我认为我找到了一个不需要原生黑客攻击的解决方案..
如果您有一个从page1.html到page2.html的Phonegap / cordova应用程序,则会返回到page1.html的链接,标准的后退按钮行为将不会退出应用程序。
第1页>>第2页>>第1页 - Windows Phone将带您进入第2页而不是退出应用程序。这是预期的行为,但它有点记录不清......
无论如何,我搜索了很多年,但没有找到适合我的修复..
Diff friendly folks see the commit that includes this fix
TLDR我如何解决这个问题是使用JS值来跟踪我所在的页面,如果我在索引页面上我重置历史记录然后我允许本机后退按钮功能被激活..
你可以在page1.html中使用IE ..
var currentPage = "index";
然后在你的app.deviceready函数中包含..
if(currentPage == "index"){
history.go(-(history.length-9999));
document.addEventListener("backbutton", handleBack, true);
}else{
document.addEventListener("backbutton", handleBack,
false);
}
function handleBack(){
// handle other logic here such as handling the back events from page2 to page1..
}
这里真正的魔力是history.go( - (history.length-9999)),它基本上告诉历史堆栈重置。此外,addEventListener上的真实语句允许触发原始注册事件(本机后退按钮)..
无论如何试一试,让我知道它是否适合你。
答案 1 :(得分:0)
protected IsolatedStorageSettings UserSettings
{
get
{
return IsolatedStorageSettings.ApplicationSettings;
}
}
void OnAppExit(object sender, EventArgs e)
{
UserSettings.Remove("sessionStorage");
UserSettings.Save();
}
private void Page_BackKeyPress(object sender, CancelEventArgs e)
{
if (_browserHistoryLength > 1)
{
_phoneGapView.Browser.InvokeScript("eval", "history.go(-1)");
_browserHistoryLength -= 2;
e.Cancel = true;
}
else
{
//to exit app
Application.Current.Exit += new EventHandler(OnAppExit);
}
}
答案 2 :(得分:-2)
Navigator.app.exit()将无法正常工作。您可能必须为Exit方法编写自己的插件才能使其正常工作。作为一种解决方法,您可以在Cordova.xaml.cs中处理您的后退键硬件事件,并且为了退出您的应用程序,您可以编写**
Application.Current.Terminate();
按硬件后退按钮退出应用程序。