使用后退按钮时停止用户访问应用程序

时间:2013-07-25 18:36:48

标签: c# windows-phone-7 xaml windows-phone-8 protection

我正在制作一个简单的密码管理应用程序,要求用户记住一个“主密码”以访问存储在应用程序中的所有其他密码。

但是我的问题是后退按钮(和多任务处理)。好像用户(或更重要的是,其他人)使用这些,他/她可以访问应用程序而无需经过初始验证页面。

有没有办法阻止这个问题?

或者有没有办法在按下开始按钮时简单地终止应用程序? (以达到与使用后退按钮退出应用程序时相同的效果)。

4 个答案:

答案 0 :(得分:2)

使用App.xaml.cs中的Application_Activated事件来检测此情况并相应地应用您的逻辑,例如再次询问身份验证 没有API可以关闭Windows Phone 7的应用程序。对于Windows Phone 8,您可以使用Application.Current.Terminate();

答案 1 :(得分:0)

如果您的应用程序面向Windows Phone 7(将在Phone 8上运行),您可以使用以下行退出应用程序:

new Microsoft.Xna.Framework.Game().Exit();

这可以在Microsoft.Xna.Framework.Game程序集中找到。

答案 2 :(得分:0)

我认为我有最好的解决方案。 在app.xaml.cs中,您将创建一个全局变量didResume。在Appication_Activated事件中,您将didResume设置为true。现在,每当您加载需要用户身份验证的页面时,请检查变量以查看用户是否已恢复,如果他们这样做,您可以随意处理它。这是app.xaml.cs的代码:

  public static  bool didResume = false;
  private void Application_Activated(object sender, ActivatedEventArgs e)
    {
        didResume = true;
    }

现在您只需将此方法添加到您要保护的任何页面:

  protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        if(App.didResume)
        {
            NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        }
    }

我认为这应该可行,因为它实际上并没有调用任何可能无法在Windows Phone 7上运行的API。它简单而安全,并将提供可靠的用户体验。此外,由于它会在页面导航到任何时候进行验证,我认为用户更难以绕过某些方式。

答案 3 :(得分:-1)

在Application_Deactivated事件中只抛出异常

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
    throw new Exception("System Exit");
}