我正在开发一个用于锁定和解锁屏幕的应用程序。我正在使用 disableKeygaurd 和 reeanbleKeygaurd 来锁定和解锁。我用来解锁的以下代码:
if(mKeyguardLock == null){
mKeyGuardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
mKeyguardLock = mKeyGuardManager.newKeyguardLock("****");
mKeyguardLock.disableKeyguard();
}
和锁:
if(mKeyguardLock != null){
mKeyguardLock.reenableKeyguard();
mKeyguardLock = null;
}
它工作正常。但问题是当用户通过拖动 keygaurd(不使用我的应用程序)意外解锁屏幕时,我的应用程序将不会在下次锁定屏幕。当用户也通过拖动 keygaurd 使用解锁时,我想工作我的应用程序。我应该怎么做? 提前致谢
最佳答案
Try This:
private KeyguardManager mKeyguardManager;
private KeyguardManager.KeyguardLock mKeyguardLock;
private static final String TAG = "ALERTLock";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int flags = getFlagsForVersion();
getWindow().addFlags(flags);
mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
}
private int getFlagsForVersion() {
final String possibleFlags[] = new String[] {
"FLAG_SHOW_WHEN_LOCKED",
"FLAG_DISMISS_KEYGUARD",
"FLAG_TURN_SCREEN_ON"
};
int flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
for(String flag:possibleFlags) {
try {
Field field = WindowManager.LayoutParams.class.getField(flag);
int value = field.getInt(null);
flags |= value;
}
catch(NoSuchFieldException e) { }
catch(IllegalAccessException e) { }
}
return flags;
}
private synchronized void enableKeyguard() {
if (mKeyguardLock != null) {
mKeyguardLock.reenableKeyguard();
mKeyguardLock = null;
}
}
private synchronized void disableKeyguard() {
if (mKeyguardLock == null) {
mKeyguardLock = mKeyguardManager.newKeyguardLock(TAG);
mKeyguardLock.disableKeyguard();
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
disableKeyguard();
}
@Override
public void onResume() {
super.onResume();
disableKeyguard();
}
关于android - 关于屏幕锁定和解锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9307542/