我正在寻找一种在启动时为我的安卓应用程序提供密码保护的方法,即当启动/恢复属于我的apk包的活动时,将显示一个密码对话框。
我已经尝试了一些方法(例如扩展应用程序类等),但似乎没有一种方法能够正常工作。 要么它们不在UI线程上运行,要么在每次启动/恢复时都不显示对话框。
我已经尝试了一些方法(例如扩展应用程序类等),但似乎没有一种方法能够正常工作。 要么它们不在UI线程上运行,要么在每次启动/恢复时都不显示对话框。
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
}
}
onResume
函数中的代码也应该在onStart
函数中执行。我不得不添加这部分内容以避免一个烦人的情况:在干净退出后重新打开应用程序时,锁屏没有显示。 - Yoann Hercouet继承 Application 类,在其中设置一个变量,以确定下一次应用程序发生某事时,是否应该提示对话框。
在 Activity、Service 等中,使用接收到的 Context 获取您的 Application,如果该变量设为显示对话框,则从您的 Activity 代码(即 UI 线程)中显示对话框。您可能会将此代码放在 onResume 中。
在 onPause 中,将变量设置为下一次要显示它。在 onResume 中,将其设为 false。