支持平臺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();
}
}
}
}