Вопрос

Мне нужно, чтобы моя активность обрабатывала нажатие кнопки HOME с помощью приемника программно, но событие не запускается.Я могу, тем не менее, успешно зарегистрироваться и запечатлеть этот фильтр намерений, если я объявления в разделе Деятельность manifest.xml .Вот код для приемника, который не работает:

BroadcastReceiver br;

br = new BroadcastReceiver() {
       @Override
       public void onReceive(Context context, Intent intent) {
               return;  // I put a breakpoint here to see if this gets called
       }
};


IntentFilter intf = new IntentFilter();
intf.addAction(Intent.ACTION_MAIN);
intf.addCategory(Intent.CATEGORY_HOME);
intf.addCategory(Intent.CATEGORY_DEFAULT);

registerReceiver(br, intf);

Кто-нибудь знает, почему это не фиксирует нажатие кнопки "Домой"?

Кстати, я попытался обойти это, создав другое действие и указав его фильтр намерений в манифесте.Я установил действие enabled="false" в манифесте, но я не мог понять, как включить это действие во время выполнения.Итог, я хочу только зарегистрировать фильтр намерений кнопки home для моего приложения только тогда, когда мое приложение запущено, и я не могу понять, как это сделать.

Это было полезно?

Решение

Если вы пытаетесь внедрить заменяющий начальный экран, вам понадобится ваш Intent фильтр, который должен быть в манифесте - смотрите Пример приложения Home в SDK.

Если вы пытаетесь заблокировать ключ HOME, пожалуйста, не делайте этого.

Другие советы

Никогда не должно быть случая, когда вам нужно будет переопределить кнопку "Домой", она предназначена для того, чтобы пользователь всегда сохранял контроль над своим телефоном.Что именно ты пытаешься сделать?Если вы хотите определить, когда ваша активность больше не видна, вам следует переопределить onStop().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top