3

我的问题是如何使用phonegap 2.3 退出window phone 8 中的应用程序。
我使用了“navigatior.app.exit()”,但它显示“navigatior.app”未定义。

4

3 回答 3

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);
           }
    }
于 2014-11-14T09:41:25.713 回答
0

我想我找到了一个不需要本机黑客的解决方案..

如果您有一个从 page1.html 到 page2.html 的 Phonegap/cordova 应用程序,然后跟随返回 page1.html 的链接,则标准后退按钮行为不会退出应用程序。

第 1 页 >> 第 2 页 >> 第 1 页 — Windows Phone 将带您到第 2 页,而不是退出应用程序。这是预期的行为,但它的记录有点差..

无论如何,我搜索了很长时间,但没有找到适合我的修复程序..

差异友好的人会看到包含此​​修复的提交

我如何解决这个问题的 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 上的 true 语句也允许触发原始注册的事件(本机后退按钮)..

无论如何试一试,让我知道它是否适合你。

资源

于 2014-01-23T20:18:57.907 回答
-2

如果插件不是由 Cordova 框架定义的,则Navigator.app.exit()将不起作用。您可能必须为 Exit 方法编写自己的插件才能使其工作。作为一种解决方法,您的后键硬件事件可以在 Cordova.xaml.cs 中处理,为了退出您的应用程序,您可以编写 **

Application.Current.Terminate();

它将在按下硬件后退按钮时退出您的应用程序。

于 2013-07-30T09:32:37.187 回答