支持平台Android4.4
应用程序里大部分按键都可以捕获,除了HOME键。
要捕获HOME键,需要增加权限。
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
和正常按键获取一样
//Activity应用
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_HOME:
//TODO
break;
}
return super.onKeyDown(keyCode, event);
}
做法就是增加一个权限。这个方法在后续的平台都不支持。
新的做法,在Android8.1测试通过
注册一个关闭的APP的广播来判断
private class HomeKeyClickReceiver extends BroadcastReceiver {
private static final String TAG = "KeyPress";
String SYSTEM_REASON = "reason";
String SYSTEM_HOME_KEY = "homekey";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_REASON);
if (TextUtils.equals(reason, SYSTEM_HOME_KEY)) {
Log.d(TAG, "home key clicked!");
Toast.makeText(MainActivity.this, "Home被按压", Toast.LENGTH_SHORT).show();
}
}
}
}