我想出了一個解決問題的工作方案,但並不理想。
當執行原生插件代碼時按下後退按鈕時,會在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用戶界面,所以我只是刪除了來自我的插件代碼的聲明。