我正在开发PhoneGap Windows Phone 7应用程序上的插件。该插件启动Windows Phone 7 UI上的一个线程,以启动相机扫描QR码。完成执行后,它将返回PhoneGap UI。
问题是,如果用户在执行本机插件代码时按下后退按钮,则应用程序崩溃。
如何覆盖PhoneGap插件的后退按钮,以便我可以返回PhoneGap UI?
答案 0 :(得分: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 UI上创建了一个新线程时才会起作用,如下所示:
var dispatcherOperation = Deployment.Current.Dispatcher.BeginInvoke(() => /* Your method */
另外需要注意的是,按下后退按钮后插件代码继续执行。使用我的代码,如果QR代码扫描没有产生结果,它将尝试返回到PhoneGap UI,但这会失败,因为后退按钮事件已经返回到PhoneGap UI,所以我只是删除了来自我的插件代码的声明。