有几天我试图找到这个问题的解决方案,谷歌和这个网站上已经有很多帖子,而且从这一切看起来似乎无法覆盖主页按钮。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
return true;
}
return super.onKeyDown(keyCode, event);
}
对于某些情况,这是行不通的。
无论如何我在某处读到有一种解决方法可以让你在按下HOME按钮时触发某些东西,部分似乎有效。
protected void onUserLeaveHint() {
super.onUserLeaveHint();
Log.i("LOG", "onUserLeaveHint");
}
但我想要做的是reenableKeyguard(我知道要首先启用锁定屏幕必须禁用它)在该方法内部,但由于某些原因它不会启用。所以这是我的代码。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_lock);
}
public void onStart() {
super.onStart();
Globals.km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
Globals.kl = Globals.km.newKeyguardLock("My_App");
Globals.kl.disableKeyguard();
Log.i("LOG", "OnStart");
}
public void onResume() {
super.onResume();
Log.i("LOG", "OnResume");
}
protected void onUserLeaveHint() {
super.onUserLeaveHint();
Log.i("LOG", "onUserLeaveHint");
Globals.kl.reenableKeyguard();
}
public void onPause() {
super.onPause();
Log.i("LOG", "OnPause");
}
protected void onStop() {
super.onStop();
Log.i("LOG", "OnStop");
}
Reenable仅在活动开始时起作用,因此如果我将其放在onPause()中,则会出现锁定屏幕。但是,当我按回家时,它不起作用。
有谁能告诉我我做错了什么?感谢名单。