2012-04-12 22 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應用程序並不意味着關閉。試圖關閉它們是違反開發者準則的,應用程序可能會被拒絕。

只是讓默認導航堆棧機制照顧它。

相關問題