0

我正在我的 PhoneGap Windows Phone 7 应用程序上开发一个插件。该插件在 Windows Phone 7 UI 上启动一个线程来启动摄像头以扫描 QR 码。当它完成执行时,它会返回到 PhoneGap UI。

问题是如果用户在执行本机插件代码时按下后退按钮,应用程序就会崩溃。

如何覆盖我的 PhoneGap 插件的后退按钮,以便我可以返回到 PhoneGap UI?

4

1 回答 1

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,所以我只是删除了那个我的插件代码中的声明。

于 2013-04-07T22:57:57.847 回答