首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用密码锁定应用程序

使用密码锁定应用程序
EN

Stack Overflow用户
提问于 2013-03-18 20:05:47
回答 3查看 587关注 0票数 0

在可湿性粉剂应用程序中,我们需要提供用户选项,以锁定密码应用程序。

据我所知,可湿性粉剂应用生命周期,我需要把导航到LockPage在App.Application_Activated,App.Application_Deactivated和起始页,但我不能使用NavigationService在应用程序类…

我不想把导航代码锁在彼此的页面上,还是没有别的选择?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-19 14:13:09

我写了自己的解决方案,但它可能并不像它可能的那样优雅。

应用程序锁定逻辑:用户使用密码启用应用程序锁定,我们在应用程序类中处理Application_Deactivated和Application_Closing事件,如果用户启用此选项,则将应用程序标记为已锁定。然后,在每个页面上,我们应该检查:应用程序当前是否锁定,如果是,我们应该导航到AppLockedWithPasswordPage。在AppLockedWithPasswordPage上,我们需要检查用户的密码,如果是正确的,调用NavigationService.GoBack()。

所以我们需要做6个步骤:

  1. 您应该选择保存IsAppCurrentlyLocked (布尔标志)、AppLockPassword (字符串)和IsUserEnabledAppLockWithPassword (布尔标志)的位置。我选择了IsolatedStorageSettings
  2. Create AppLockedWithPassword页面,在这里你需要显示TextBox和按钮,别忘了为用户提供重置AppLock的选项。当然,删除应用程序应该会阻止BackButton导航,所以阻止它:

// AppLockedWithPasswordPage protected override void OnBackKeyPress(CancelEventArgs e) { //防止返回密钥导航e.Cancel = true;}单击按钮时

  • 检查密码

//用户私有void发送者(object (PasswordBox.Password.Equals(IsolatedStorageSettings"AppLockPassword")),AppLockedWithPasswordPage e) { if UnlockAppButton_Click{ NavigationService.GoBack();} else { //说用户密码不正确等...}} App类中的

  • 查找Application_Deactivated (处理应用最小化(窗口按钮))和Application_Closing (处理用户关闭应用时)方法,如果发生此事件时用户启用此选项,我们应将应用标记为锁定

private void SetIsAppCurrentlyLockedFlagIfUserEnabledAppLocking() { if ((bool)IsolatedStorageSettings"IsUserEnabledAppLockWithPassword") { IsolatedStorageSettings"IsAppCurrentlyLocked“= true;}} private void Application_Deactivated(object sender,DeactivatedEventArgs e) { SetIsAppCurrentlyLockedFlagIfUserEnabledAppLocking();} private void Application_Closing(object sender,ClosingEventArgs e) { SetIsAppCurrentlyLockedFlagIfUserEnabledAppLocking();}

  • 和最后一步,在所有要锁定的页面上,您应该添加check in OnNavigatedTo方法,如果应用程序当前已锁定,该方法将导航到AppLockedWithPasswordPage

//使用检查方法私有静态Uri PagesUtils.NavigateToAppLockedWithPasswordPageIfAppLocked();= PagesUtils Uri(“uriToAppLockedWithPasswordPage”,UriKind.Relative);公共静态无效页面){ if ((bool)IsolatedStorageSettings"IsAppCurrentlyLocked") { page.NavigationService.Navigate(uriToAppLockedWithPasswordPage);}}创建一些类,如PagesUtils等//在每个页面中添加受保护的覆盖空页面(NavigationEventArgs e) {PagesUtils.NavigateToAppLockedWithPasswordPageIfAppLocked();base.OnNavigatedTo();}

附言:当然真实的代码要好得多,这只是一个简单的例子,我希望它能帮助你

票数 1
EN

Stack Overflow用户

发布于 2013-03-19 02:11:08

您应该在Application_LaunchingApplication_Activated事件中添加检查。

应用程序首次打开时的启动事件,以及用户离开做其他事情后返回应用程序时的激活事件。

让这些事件都设置一个标志,并让所有页面从其继承的基页在导航到时检查此标志。检查是否设置了该标志,如果是,则显示登录提示,并在成功输入密码后清除该标志。

这种方法除了正常启动应用程序外,还将处理FAS,FAR & deep链接。

注意一些选择器在返回应用程序时会触发激活事件。根据需要/适当地为这些添加额外的处理。

票数 0
EN

Stack Overflow用户

发布于 2013-03-18 23:24:22

为什么不创建一个输入密码的起始页呢?

对于有MainPage.xaml的实例,在WMAppManifest上创建一个InsertPasswordPage.xaml引用它作为起始页:

代码语言:javascript
运行
复制
  <DefaultTask Name="_default" NavigationPage="InsertPasswordPage.xaml" />

并在InsertPasswordPage.xaml上插入所有密码逻辑,当用户成功登录时,只需导航到您的主页;)

编辑:正如Gambit所说,如果用户按下back按钮,他将返回到insert password页面,但您可以通过在用户登录后从后台堆栈中删除该页面来解决此问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15476449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档