如何在Android中对应用程序进行密码保护

如何在Android中对应用程序进行密码保护,android,password-protection,Android,Password Protection,我希望用户每次尝试进入应用程序时都输入密码。也就是说,每次应用程序从后台进入前台时,用户都必须输入密码,无论是通过按下启动器图标还是长按home键 我完成了第一部分,因为启动程序的意图被激发了,我在该活动的onRestart中得到了一个回调 但是,长时间按home键并启动不会为onRestart提供回调 此外,如果用户通过按通知栏上的通知来启动应用程序,该怎么办。在用户单击您的onResume呼叫中的通知之前,如何区分应用程序最初是在后台还是前台,在您的onPause-=1中设置loginCou

我希望用户每次尝试进入应用程序时都输入密码。也就是说,每次应用程序从后台进入前台时,用户都必须输入密码,无论是通过按下启动器图标还是长按home键

我完成了第一部分,因为启动程序的意图被激发了,我在该活动的onRestart中得到了一个回调

但是,长时间按home键并启动不会为onRestart提供回调


此外,如果用户通过按通知栏上的通知来启动应用程序,该怎么办。在用户单击您的
onResume
呼叫中的通知之前,如何区分应用程序最初是在后台还是前台,在您的
onPause
-=1中设置
loginCounter
+=1

如果loginCounter==0=>显示登录对话框


在通知栏中,您设置了调用
活动的
意图
,对吗?只需在其中添加一个参数“isCalledByNotificationBar”作为布尔值。

如果恢复时
不起作用,那么在WindowFocusChanged(布尔值)上
怎么样?

也许你应该做的是重新进入应用程序,看看它是否小于30(?)自上次暂停应用程序的任何活动时更新的时间戳起的秒数。如果它是少,不要要求密码。考虑到这个短时间窗口可能会平滑一些您不想注销的过渡

“onRestart”-您是指onRestart()?onRestart指的是onRestart而不是onResume,因为onResume最终将在onstart之后调用。注意:您永远无法覆盖HomeKey的行为。只有修改Android源代码并将其部署到目标设备上(不可能),这才是可能的。谢谢及时的回复,但是考虑一下这种情况。我启动活动A1,因此在其onResume loginCounter=1上。现在,从A1 I启动A2开始,暂停时的A1称为makingLoginCounter=0。所以现在每次活动启动后,我都会收到一个密码提示。此外,如果在A1上显示任何其他对话框,它将导致显示密码对话框。我希望你能理解这个问题,但你自己说过“每次应用程序从后台进入前台时,用户都必须输入密码”,这正是这种情况下发生的事情。@frieza:关于“因此,现在在每次活动启动后,我都会得到一个密码提示”:在每个活动开始时,都会向用户传递一个类似“nopasswd”的额外密码(intent.putExtra()。如果这个额外的存在,你不需要密码,否则你可以。在onCreate中,你可以清除额外的参数,这样它就不存在了,以防设备进入睡眠状态或在主屏幕长按后屏幕返回前台。没有尝试过,只是想一想。因为你不能可靠地判断前台活动是什么,所以我唯一能做的事情是k of是我单独发布的超时计时器想法,只要在每次代码中都重置它,如果在代码过期之前返回到代码中的某个部分,则假设用户不是“真的”打算“真的”离开。然后调整延迟直到这足够真实。很抱歉,我没有在onResume中得到我应该做的事情,现在您建议我在WindowFocusChanged(布尔值)上执行该操作