Android - Можно ли отключить нажатие кнопки "Домой"

У меня есть приложение, когда он запускается, я должен отключить все кнопки на устройстве Android, мне удалось отключить конечный вызов и другие. Мне нужно отключить нажатие кнопки дома. Он не должен вызывать никаких действий при нажатии.

Любые предложения, высоко оцененные

Ответ 1

Я уверен, что Toddler Lock просто использует BroadcastReciever и прислушивается к Intent.ACTION_MAIN и к категории Intent.CATEGORY_HOME - поэтому при первом запуске он советует вам установить флажок "использовать это приложение по умолчанию", и заставляет вас выбирать блокировку для малышей.

Таким образом, он действительно не блокирует кнопку "Домой" вообще, он просто устанавливает себя как широковещательный приемник по умолчанию для:

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);

Когда вы запускаете Lock Toddler Lock, он, вероятно, устанавливает внутренний флаг, и если вы нажмете кнопку "домой", он просто приведёт окно вперед. Если флаг не установлен, он, вероятно, запускает Launcher явно.

Надеюсь, это имеет смысл. Это просто теория, но я почти на 100% уверен, что так оно и было.

Ответ 2

Добавьте в свой код следующий код:

@override

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

Edit:

Это работает во всех старых версиях Android. Но не будет работать в ICS и желе bean и даст вам сбой в приложении

Что означает этот 4-строчный Java-код в приложении Android?

Ответ 3

Добавьте это в свой манифест .xml для своей основной деятельности:

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />

Кнопка HOME всегда (повторно) запускает вашу деятельность. Работает в Фройо.

Ответ 4

Я нашел способ заняться ключом 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"/>

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

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

pm disable com.android.launcher2

Теперь нажатие кнопки "Домой" будет оставаться на том же экране.

Ответ 5

здесь вы можете найти мое приложение для Android, которое сохраняется на домашней странице. Кнопка "Дом", "Назад", "Вызов", "Питание" отключена. Пользователь может завершить приложение, только набрав пароль.

Ответ 6

Дополнительное дополнение к сообщению Jeffreys, вот что-то, что сработало для меня (и до сих пор позволяет полупрозрачную тему)

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

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

KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();

Это действительно хорошо работает для создания собственного приложения для блокировки клавиатуры.