Переопределение кнопки «Главная» – как мне избавиться от выбора?
При создании одного Intent, чтобы MyActivity реагировал на пользователя, нажав кнопку Home, легко использовать разметку XML:
Я хочу знать, как избежать выбора «какой активности вы хотите использовать» для главного экрана? HTC сделал свой «Touch Flo» (Sense) переопределить действие «start» по умолчанию, и я никогда не стану сомневаться, хочу ли я обычно использовать «Start» или «TouchFlo». Однако, когда я добавил свою собственную деятельность, я всегда задавал вопрос.
Да, я знаю, что я могу проверить «Использовать это как стандартное» – checkbox, но это не то, что я хочу прямо сейчас. Итак, вопрос: могу ли я заставить систему переопределить все остальное и всегда использовать MyActivity по умолчанию?
- Как установить связь с Android-службой
- Режим киоска в Android
- Как анимировать ImageView из центра, чтобы заполнить экран и наоборот (стиль facebook)?
- Как читать контакты на Android с помощью Realm?
- Как использовать asynctask для отображения индикатора выполнения, который учитывается?
Далее, я действительно хочу только переопределить обычный домашний экран, когда приложение работает. Если он не работает, все должно работать нормально, т. Е. MyActivity НЕ должен быть связан с кнопкой «Домой».
Любые идеи были бы замечательными.
- Поддерживает ли поддержка Android несколько языков?
- FragmentActivity не может быть разрешено для типа
- Как перенести некоторые данные в другой fragment?
- Уведомление проходит старое задание
- Показать диалог из fragmentа?
- Как сделать круговую прокрутку на ViewPager?
- Понять class R в Android
- Android MapView - автоматическое масштабирование до тех пор, пока не будут видны все ItemizedOverlay
Вы не можете навсегда переопределить кнопку «Домой» без подтверждения пользователем.
Одним из аргументов в пользу того, почему это так, является безопасность. Кнопка «Домой» – это тот способ, когда пользователю может быть гарантировано выход из любого приложения. Если бы вы могли заставить кнопку «Главная» запускать приложение вместо главного экрана без подтверждения пользователем этого изменения, тогда было бы очень легко написать вредоносное приложение, которое захватило бы телефон пользователя.
Кроме того, ваше приложение может содержать реплицированный начальный экран, в котором собраны данные учетной записи Google пользователя; не так сложно, поскольку источник доступен. Если ваше приложение может спокойно заменить начальный экран по умолчанию, пользователю будет сложно сказать, что это произошло.
Кроме того, вы действительно хотите переопределить Home? Главная – это кнопка аварийного выхода. Повторное нажатие кнопки «Домой» всегда будет возвращать пользователя на центральную панель главного экрана, поэтому, независимо от того, какое приложение они запускают, пользователю легко вернуться к тому, что они знают. Вы не должны действительно переопределять это, если не будете производить полную замену дома.
@Override public void onAttachedToWindow() { Log.i("TESTE", "onAttachedToWindow"); this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); }
С помощью этого метода кнопка HOME перестает работать в этой операции (только это действие). Затем вы просто переопределяете, поскольку это было обычное событие кнопки (например, кнопка возврата).
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_HOME) { Log.i("TESTE", "BOTAO HOME"); return true; } return super.onKeyDown(keyCode, event); }
Ну, пользователю все равно придется выбирать обычный дом, поскольку их дом с использованием по умолчанию проверяется, чтобы остановить приглашение от возвращения. Тем не менее, я считаю, что вы можете потом каким-то образом изменить системные настройки, чтобы, кстати, ваш конкретный вид деятельности считался домом по умолчанию, так что нажатие дома ничего не сделало бы или не было бы заблокировано для пользователя в основном действии, и я понимаю, что вы хотите запустить своего пользователя в другие действия оттуда, давая им быстрый домашний пресс для возврата в этот пусковой пуск. Я полностью понимаю это преимущество, и он может даже выиграть от того, что я разрабатываю, если я захочу реализовать несколько экранов виджетов, которые пользователь может перевернуть влево или вправо между ними.
Существует, по крайней мере, 1 приложение, которое я скачал, который, похоже, делает именно это. Когда пользователь выходит из приложения, он восстанавливает обычное домашнее предпочтение пользователя по умолчанию. Приложение инструктирует пользователей очень явно выбирать Launcher в качестве дома по умолчанию и никогда не делать этого с самим приложением. В нем есть несколько различных методов «выхода», которые дают пользователю возможность выбрать, к какому дому вернуться, если у них есть несколько, и тот, который просто выходит из их обычного значения по умолчанию.
Я также изучаю это и буду сообщать о достигнутом прогрессе и источнике.
OnUserLeaveHint () может поймать пользователя, нажав кнопку «домой».
Он существует с API уровня 3.
@Override protected void onUserLeaveHint() { super.onUserLeaveHint(); /* * Called as part of the activity lifecycle when an activity is about to go into the background * as the result of user choice. For example, when the user presses the Home key, onUserLeaveHint() will be called, * but when an incoming phone call causes the in-call Activity to be automatically brought to the foreground, * onUserLeaveHint() will not be called on the activity being interrupted. * In cases when it is invoked, this method is called right before the activity's onPause() callback. */ }
Источник: https://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint ()
Использовать onUserLeaveHint ()
onUserLeaveHint () является защищенным методом как другие методы жизненного цикла активности, и если вы работаете с onUserLeaveHint, это позаботится о следующем случае
- Когда пользователь нажимает домашний ключ
- Когда пользователь удаляет ключ
- Когда пользователь нажимает панель предупреждения
Здесь вы можете щелкнуть кнопкой мыши на кнопке Homeb.
Удачи. 🙂