Android - Возможно ли отключить нажатие кнопки «Домой» - PullRequest
61 голосов
/ 29 января 2010

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

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

Ответы [ 6 ]

29 голосов
/ 16 апреля 2010

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

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

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

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

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

18 голосов
/ 16 июня 2011

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

@override

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

Edit:

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

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

11 голосов
/ 21 июня 2011

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

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

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

5 голосов
/ 30 апреля 2012

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

5 голосов
/ 27 декабря 2010

Я нашел способ справиться с ключом 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 будет оставаться на том же экране.

2 голосов
/ 06 сентября 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...