每次用户返回Android应用程序时都需要登录

时间:2011-02-15 18:42:19

标签: android security

我正在处理一款处理敏感用户信息的Android应用。其中一个要求是用户需要在他们离开并返回时重新登录应用程序。当用户按下主页按钮,然后重新启动应用程序(android:clearTaskOnLaunch中的ActivityAndroidManifest.xml属性时,可以轻松处理此问题。但是,当用户长按主页按钮,切换到另一个应用程序然后返回时,我们需要做同样的事情。

我已经研究过每一种我能想到的方法,但却没有找到可行的解决方案。这甚至可以用于Android吗?

在回答时,请记住这是我无法控制的业务要求。

5 个答案:

答案 0 :(得分:3)

好吧,昨天我遇到了同样的问题。这就是我所做的,它运作良好:

  1. android:launchMode="singleTask"
  2. 的主要活动中添加了AndroidManifest.xml
  3. 打电话给我的老板说:嘿,这需要很长时间......坚持下去!
  4. 整晚都去喝啤酒。
  5. 为了澄清,我的主要活动只有一个按钮,表示登录并启动登录页面。

答案 1 :(得分:0)

你有什么尝试?您始终可以使用正确的Activity lifecycle方法清除正在保存的任何会话。

答案 2 :(得分:-1)

如果我理解正确您每次有人回到应用程序时都需要授权,无论是重新进行还是回到应用程序,那么您可以覆盖活动(或活动)上的onRestart()活动生命周期事件。因此,在onRestart()中,您可以将用户重定向到登录屏幕(您可能还希望根据您的要求考虑onResume())

此页面上的生命周期图表将更清晰: http://developer.android.com/reference/android/app/Activity.html

答案 3 :(得分:-1)

是否有可能将其作为基于时间的事情,而不是严格地离开应用程序并返回?

您可以拥有一个单独的服务来跟踪用户上次访问该应用程序的时间。

即,在每个onPause中,Activity告诉服务某个Activity已暂停。该服务记录了该时间。

在每个onResume中,活动通知服务它希望恢复。如果自上次onPause后经过了一段时间,则服务表明需要登录。

我认为这会比他们每次离开应用程序时都能提供更好的用户体验。这可能非常令人沮丧,需要30秒才能阅读文本,然后必须再次登录。

我想如果你调整它以使超时非常短,它的行为与你要求的行为非常相似,但是可以选择减少延迟。

答案 4 :(得分:-1)

我认为实现这一目标的最简单方法是在主要活动中添加一个字段,例如private boolean isLocked = true;

要在显示其他应用时锁定应用,请在isLocked = true方法中设置onPause()。为了确保您不会锁定自己的应用,从自己的活动返回时,请通过startActivityForResult()启动它们并在onActivityResult中解锁。

您现在可以检查onResume()您的应用已被锁定并将用户重定向到您的登录屏幕。