Как отключить домашний ключ

Я хотел бы заблокировать экран. Я хочу отключить домашний ключ и использовать только обратный ключ. Как это сделать?

Используйте этот метод для отключения ключа Home в android

@Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } 

Я нашел способ заняться ключом HOME. Для вашего приложения установите манифест как

 <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.MONKEY"/> 

Теперь ваше приложение является альтернативным приложением Launcher.

Используйте adb и отключите приложение запуска с помощью диспетчера пакетов

 pm disable com.android.launcher2 

Теперь нажатие клавиши Home всегда будет оставаться на одном экране.

Это решение работает только до 3.x.

Ладно, это был сложный вопрос. Но вот способ взломать его.

Переопределите приведенный ниже метод в своей деятельности,

 @Override public void onAttachedToWindow() { super.onAttachedToWindow(); this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); } 

И теперь обработайте ключевое событие, подобное этому,

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_HOME) { Log.i("Home Button","Clicked"); } if(keyCode==KeyEvent.KEYCODE_BACK) { finish(); } return false; } 

Добавьте этот код в свой класс MainActivity :

 Timer timer; MyTimerTask myTimerTask; @Override protected void onResume() { super.onResume(); if (timer != null) { timer.cancel(); timer = null; } } @Override protected void onPause() { if (timer == null) { myTimerTask = new MyTimerTask(); timer = new Timer(); timer.schedule(myTimerTask, 100, 100); } super.onPause(); } private void bringApplicationToFront() { KeyguardManager myKeyManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); if( myKeyManager.inKeyguardRestrictedInputMode()) return; Log.d("TAG", "====Bringging Application to Front===="); Intent notificationIntent = new Intent(this, MainActivity.class); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); try { pendingIntent.send(); } catch (PendingIntent.CanceledException e) { e.printStackTrace(); } } public void onBackPressed() { // do not call super onBackPressed. } class MyTimerTask extends TimerTask { @Override public void run() { bringApplicationToFront(); } } 

Это не блокировка для кнопки «домой», но пользователь не может переключиться на другое приложение в течение длительного времени (более 100 миллисекунд), возможно, это то, что вы хотите.

Чтобы отключить домашнюю кнопку, попробуйте следующее:

 @Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } 

Проблема с панелью уведомлений может быть решена путем скрытия панели уведомлений, как здесь:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.xxxx); getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN); .... } 

Или установите полноэкранную тему для своей деятельности или приложения в манифесте:

 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
Intereting Posts
Пожертвовать через биллинг в приложении Как я могу обеспечить задержку между анимационными эффектами Какой из них лучше использовать Sencha Touch или телефонную трубку для Android? Разлагают ли фрагменты жирную деятельность? Как тренировать сеть тензорного потока с использованием JNI на Android? Как исследовать стиль в андроиде Какие форматы видео будут воспроизводиться в эмуляторе? Android WebView внутри событий ListView onclick Плиточный фон толкает его Вид размера Каков наилучший способ обработки обновлений, когда календарь синхронизирует новые события? Как создать исполняемый файл native (командной строки) для запуска на Android? Обновление проекта Gradle завершилось неудачей после обновления Android Studio Как создать динамические экраны салфетки в android? Ошибка Eclipse "Java heap space", Eclipse не отвечает Как сохранить только первый добавленный фрагмент в фоновом стеке (перекрытие фрагментов)?