Как программно закрыть системный диалог в Android? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть общий нижний лист, и я хочу вручную удалить этот нижний лист программно. Как я могу это сделать? Первоначально он вызывался с использованием Intent.createChooser.

1 Ответ

0 голосов
/ 06 сентября 2018

Я не думаю, что вы можете сделать это напрямую.Когда вы запускаете Intent, возвращаемый Intent.createChooser(), он запускает ChooserActivity .

Если у вас был доступ к системе на уровне подписи, вы могли бы использовать Instrumentation#sendKeySync(), и если у вас был rootможет использовать input keyevent 4, но ни одно из них не будет возможным для приложения для широкой аудитории.

В ChooserActivity определен IntentFilter, определенный в манифесте для прослушивания Intent.ACTION_CHOOSER, но он не прослушиваетчто-нибудь еще, включая Intent.ACTION_CLOSE_SYSTEM_DIALOGS, который обычно был бы способом сделать это.

Вы можете использовать AccessibilityService и отправить с него действие GLOBAL_ACTION_BACK, но это, вероятно, немного тяжело для того, чтоты делаешь.

...