我正在寻找一种在启动时密码保护我的Android应用程序的方法,即当启动/恢复属于我的apk-package的活动时,将显示密码对话框。
我已经尝试了一些方法(扩展application class等等),但似乎都没有。要么它们不在UI线程上运行,要么在每次启动/恢复时都不显示对话框。
// m
答案 0 :(得分:13)
所以这就是我坚持的解决方案。在我的Application类中,我存储一个long变量,其中包含上次暂停活动时的系统时间。
import android.app.Application;
public class MyApplication extends Application {
public long mLastPause;
@Override
public void onCreate() {
super.onCreate();
mLastPause = 0;
Log.w("Application","Launch");
}
}
在每个onPause方法中,我将此值更新为当前时间。
@Override
public void onPause() {
super.onPause();
((MyApplication)this.getApplication()).mLastPause = System.currentTimeMillis();
}
在每个onResume中,我将它与当前时间进行比较。如果已经过了一定的时间(当前为5秒),则会显示我的密码提示。
@Override
public void onResume() {
super.onResume();
MyApplication app = ((MyApplication)act.getApplication());
if (System.currentTimeMillis() - app.mLastPause > 5000) {
// If more than 5 seconds since last pause, prompt for password
}
}
答案 1 :(得分:3)
子类应用程序,并在那里设置一个变量,以确定下次是否在您的应用程序中发生某些事情时,您应该提示是否有对话框。
在您的活动,服务等中...使用您收到的上下文,如果var设置为显示对话框,请从您的活动代码(意味着UI线程)中显示您的对话框。你可能会把它放在你的onResume代码中。
在onPause中,将变量设置为下次显示。在onResume中,将其设置为false。