2013-04-07 64 views
0

我正在PhoneGap Windows Phone 7應用程序上開發插件。該插件在Windows Phone 7 UI上啓動線程以啓動相機以掃描QR碼。當它完成執行時,它將返回到PhoneGap用戶界面。PhoneGap - 如何覆蓋後退按鈕,同時執行本機代碼(Windows Phone 7)

問題是,如果用戶在本機插件代碼執行時按下後退按鈕,則應用程序將崩潰。

如何覆蓋PhoneGap插件的後退按鈕,以便我可以返回到PhoneGap UI?

回答

0

我想出了一個解決問題的工作方案,但並不理想。

當執行原生插件代碼時按下後退按鈕時,會在App.xaml.cs文件中調用導航失敗事件。它看起來像這樣:

 // Code to execute if a navigation fails 
    private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) 
    { 
     if (System.Diagnostics.Debugger.IsAttached) 
     { 
      // A navigation has failed; break into the debugger 
      System.Diagnostics.Debugger.Break(); 
     } 
    } 

我只是替換代碼上面的命令返回到PhoneGap的UI:

private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) 
    { 
     if (System.Diagnostics.Debugger.IsAttached) 
     { 
      Deployment.Current.Dispatcher.BeginInvoke(() => ((PhoneApplicationFrame)Application.Current.RootVisual).GoBack()); 
     } 
    } 

我覺得這個,如果你之前創建一個新的線程只會工作Windows Phone的用戶界面,這將是這個樣子:

var dispatcherOperation = Deployment.Current.Dispatcher.BeginInvoke(() => /* Your method */ 

另外要注意的是,插件代碼繼續執行按後退按鈕後。使用我的代碼,如果QR碼掃描沒有產生結果,它將嘗試返回到PhoneGap用戶界面,但這會失敗,因爲後退按鈕事件已經返回到PhoneGap用戶界面,所以我只是刪除了來自我的插件代碼的聲明。