Уведомление экрана блокировки Android не может открыть браузер при двойном нажатии

Мое приложение отправляет уведомление, при открытии которого открывается браузер с указанным URL-адресом. На самом деле завернутые намерения отправляются BroadcastReceiver, и этот широковещательный приемник запускает Browser.

Intent browserIntent = new Intent(Intent.ACTION_VIEW, intent.getData());
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(showTaskIntent);

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

Из журнала я вижу, что ActivityManager получает намерение и пытается запустить Broswer:

09-02 15: 10: 52.309 1536-1894 / system_process I / ActivityManager: START u0 {act = android.intent.action.VIEW dat = https://www.thesun.co.uk/... flg = 0x10000000 cmp = com.android.browser /.BrowserActivity} из идентификатора пользователя 10059 на дисплее 0

Но то, что случилось с браузером

09-02 15:10:52.910 12131-12131/com.android.browser I/art: запуск блокировки GC Explicit 09-02 15:10:52.978 12131-12131/com.android.browser I/art: явная одновременная отметка Sweep GC освободил 44(1768B) объектов AllocSpace, 0(0B) объектов LOS, 15% свободных, 11 МБ / 13 МБ, приостановлено 427 всего 63,223 мс 09-02 15:10:52.980 12131-12131/com.android.browser I/art: Начало блокировки GC Явное 09-02 15: 10: 53.095 12131-12131/com.android.browser I/art: Явное одновременное сканирование меток GC освобождено 5 (160B) объектов AllocSpace, 0(0B) объектов LOS, 15% бесплатно, 11 МБ / 13 МБ, пауза 697 всего 114.607 мс 09-02 15: 10: 53.095 12131-12131/com.android.browser I/art: Начало блокировки GC Explicit 09-02 15:10:53.255 12131-12131 / com. android.browser I / art: явная одновременная развертка меток GC освободил 3 (96B) объекта AllocSpace, 0(0B) объектов LOS, 15% свободных, 11 МБ / 13 МБ, приостановлено 42,926 мс всего 145,640 мс

Я предполагаю, что в это время устройство все еще заблокировано экраном блокировки, когда ActivityManager сообщает о намерении запустить браузер, система Android может иметь некоторые проверки или механизм, чтобы не запускать это действие.

У кого-нибудь была такая проблема раньше? Спасибо!

1 ответ

Я думаю, что это ошибка в Chrome, и я поднял эту проблему для Android и Chrome:

https://code.google.com/p/android/issues/detail?id=221940&can=4&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened

https://bugs.chromium.org/p/chromium/issues/detail?id=645848&can=4&q=&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified

Однако я нашел обходной путь: использование пользовательских вкладок вместо обычных вкладок может решить эту проблему.

intent.putExtra("android.support.customtabs.extra.SESSION", context.getPackageName());
intent.putExtra("android.support.customtabs.extra.EXTRA_ENABLE_INSTANT_APPS", true);

Добавьте вышеуказанные дополнительные функции, чтобы Chrome использовал пользовательские вкладки.

Узнайте больше здесь: https://developer.chrome.com/multidevice/android/customtabs

Другие вопросы по тегам