У меня есть приложение, использующее Bluetooth, и оно не должно быть доступно, если на устройстве выключен Bluetooth.
способ, который я выбрал для реализации, заключается в следующем:
- создал диспетчерское действие, которое запускается при первом запуске приложения.
- это действие проверяет состояние Bluetooth, если bt выключен, он отправляет вас на
noBtScreen
, если он включен, он принимает вас yesBtScreen
проблема в том, что когда пользователь попадает на noBtScreen
, а затем нажимает кнопку «Домой», меняет статус «bt» и возвращается в приложение (долгое нажатие на кнопку «Домой» и выбор моего приложения) он достигает noBtScreen
которого он не должен получить на данный момент.
Существуют, очевидно, наивные способы исправить это, например, я могу проверить статус bt в onResume
упражнения, но я думаю, что есть «правильное» решение, которое следует использовать здесь.
Я пробовал некоторые настройки активности в файле манифеста
в частности, я попытался поставить следующие флаги на NoBtTask
:
android:finishOnTaskLaunch
android:allowTaskReparenting
в комбинации, а не в комбинации с
android:clearTaskOnLaunch
android:alwaysRetainTaskState
Я также пытался добавить this.finish к методу noBtActivity::onStop
, но это тоже не помогло (потом случилось то, что я вошел один раз, вышел, и когда я снова вошел, ничего не произошло, и я остался на домашнем экране, когда я попробовал это снова, это действительно привело меня к работе диспетчера, интересно посмотреть журнал для этого:
09-21 17: 54: 49.511: INFO / ActivityManager (115): Запуск: Intent {cmp = com.test.elad / .NoBtActivity} из pid 12603
09-21 17: 54: 49.523: ОШИБКА / Elad (12603): NoBtActivity.onCreate
09-21 17: 54: 49.527: ОШИБКА / Elad (12603): NoBtActivity.onStart
09-21 17: 54: 49.527: ОШИБКА / Elad (12603): NoBtActivity.onResume
09-21 17: 54: 49.765: INFO / ActivityManager (115): отображается com.test.elad / .NoBtActivity: + 248 мс
09-21 17: 54: 51.867: ОШИБКА / Elad (12603): NoBtActivity.onSaveInstanceState
09-21 17: 54: 51.867: ОШИБКА / Elad (12603): NoBtActivity.onPause
09-21 17: 54: 51.867: INFO / ActivityManager (115): Запуск: Intent {act = android.intent.action.MAIN cat = [android.intent.category.HOME] flg = 0x10200000 cmp = com. android.launcher / com.android.launcher2.Launcher} из pid 115
09-21 17: 54: 51.882: VERBOSE / RenderScript_jni (195): SurfaceCreated
09-21 17: 54: 51.882: VERBOSE / RenderScript_jni (195): SurfaceChanged
09-21 17: 54: 52.277: ОШИБКА / Elad (12603): NoBtActivity.onStop
09-21 17: 54: 56.183: INFO / ActivityManager (115): Запуск: Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10100000 cmp = com. test.elad / .DispatcherActivity} из pid 115
09-21 17: 54: 56.265: ОШИБКА / Elad (12603): NoBtActivity.onDestroy