Отключить кнопку "Домой" в Android 4.0+
Я пытаюсь заменить стандартный экран блокировки своим собственным приложением.
В своем коде я хочу отключить кнопку "Домой".
Я знаю, как это сделать в Android 2.3 и ниже,
но тот же код не работает с Android 4.0+ (возврат на рабочий стол при нажатии кнопки "Домой")
Недавно я обнаружил приложение под названием MiHome, которое имеет собственный экран блокировки и может отключить кнопку "Домой".
Кто-нибудь знает, как это достигается???
3 ответа
На Android нет возможности перехватить кнопку "Домой", если вы не сделаете свое приложение домашним экраном. Это по соображениям безопасности, так что вредоносные приложения не могут захватить ваше устройство, переопределяя все кнопки, которые могут выйти. Кнопка "Домой" - это единственный надежный способ выйти из любого приложения.
Если вы хотите обработать кнопку HOME, создайте домашний экран.
В целях безопасности / надежности в ICS отключено взламывание с помощью кнопки "домой". (Большинство приложений используют это для зла, чем для добра)
Пожалуйста, обратитесь к следующим вопросам для обходных путей.
- как я могу отключить андроид 4.0 кнопку домой
- переопределить домашний ключ в Android ICS
- Отключить кнопку "Домой" в Android ICS (4.0)
Похоже, единственный способ реализовать домашний экран
Попробуй это
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
} else {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
mOverlay = (RelativeLayout) inflater
.inflate(R.layout.main, (ViewGroup) null);
mOverlay.setFitsSystemWindows(false);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
mWindowManager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
mWindowManager.addView(mOverlay, params);