Size: a a a

Android Developers

2020 July 12

KS

Konstantin Smirnov in Android Developers
Всем привет!
Нужно меня немного подтолкнуть в нужном направлении:

1. Имеется Activity (для voip входящего звонка с интерфейсом принять/отклонить звонок), запускаемая на заблокированном экране (из FCM сервиса запускается HeadsUp сервис, в нем Notification, у которого запуск этой Activity происходит в setFullScreenIntent). Это все нужно, чтобы эта Activity запустилась на заблокированном экране под Андроид 10+.

2. В этой активити в методе onCreate вызываются все положенные методы, чтобы она работала на заблокированном экране (setShowWhenLocked(true);setTurnScreenOn(true); и т.п.). С ней все нормально. Работает как положено.

3. После нажатия на кнопку "Принять звонок" необходимо запустить MainActivity, тоже на заблокированном экране. Но в MainActivity в OnCreate нельзя добавлять  setShowWhenLocked и т.п.

Как же мне правильно запустить вторую Activity? С учетом, что она как может быть уже загружена в память, так и может быть не загружена...
Прошу помощи. Я что-то тупанул.
источник

ГЗ

Глеб Зыков in Android Developers
Привет
Знаете как рециклеру разделитель-вьюшку приделать?
источник

Ж

Женя in Android Developers
Глеб Зыков
Привет
Знаете как рециклеру разделитель-вьюшку приделать?
additemDecoration
источник

OP

Oleg Pchelkin in Android Developers
Konstantin Smirnov
Всем привет!
Нужно меня немного подтолкнуть в нужном направлении:

1. Имеется Activity (для voip входящего звонка с интерфейсом принять/отклонить звонок), запускаемая на заблокированном экране (из FCM сервиса запускается HeadsUp сервис, в нем Notification, у которого запуск этой Activity происходит в setFullScreenIntent). Это все нужно, чтобы эта Activity запустилась на заблокированном экране под Андроид 10+.

2. В этой активити в методе onCreate вызываются все положенные методы, чтобы она работала на заблокированном экране (setShowWhenLocked(true);setTurnScreenOn(true); и т.п.). С ней все нормально. Работает как положено.

3. После нажатия на кнопку "Принять звонок" необходимо запустить MainActivity, тоже на заблокированном экране. Но в MainActivity в OnCreate нельзя добавлять  setShowWhenLocked и т.п.

Как же мне правильно запустить вторую Activity? С учетом, что она как может быть уже загружена в память, так и может быть не загружена...
Прошу помощи. Я что-то тупанул.
а почему в mainActivity нельзя вызвать setShowWhenLocked? это ж метод для всех активити
источник

ГЗ

Глеб Зыков in Android Developers
Женя
additemDecoration
Он же будет к каждому итему применяться?
источник

Ж

Женя in Android Developers
вроде да. Давно его не юзал) чаще просто в самом айтеме разделительную вьюшку ставлю
источник

ГЗ

Глеб Зыков in Android Developers
Мне надо кастомную вьюшку вставить в рециклер по вычисляемому признаку
источник

ГЗ

Глеб Зыков in Android Developers
Вот в телеге как сделано разделение чата по дням? Эта дата - разделитель же
источник

V

Vladimir Zhdanov (DT... in Android Developers
Что думаете про HMS?
источник

KS

Konstantin Smirnov in Android Developers
Oleg Pchelkin
а почему в mainActivity нельзя вызвать setShowWhenLocked? это ж метод для всех активити
Если так сделать, то MainActivity при "обычном запуске" всегда будет работать на заблокированном экране. А это не желательно. Иначе в кармане может запуститься и интерфейс ее будет активен, что черевато спонтанному нажатию на всякие кнопочки...
источник

OP

Oleg Pchelkin in Android Developers
Konstantin Smirnov
Если так сделать, то MainActivity при "обычном запуске" всегда будет работать на заблокированном экране. А это не желательно. Иначе в кармане может запуститься и интерфейс ее будет активен, что черевато спонтанному нажатию на всякие кнопочки...
ну так сделай if - если запустилось с активити из 1 пункта - то показывай на залоченном экране. Если запустилось просто так - то нет показывать на залоченном экране. условие можешь спокойно передать через extras
источник

OP

Oleg Pchelkin in Android Developers
Глеб Зыков
Он же будет к каждому итему применяться?
там есть опционально второй параметр - index. скорее всего тебе нужен именно он)
источник

KS

Konstantin Smirnov in Android Developers
Oleg Pchelkin
ну так сделай if - если запустилось с активити из 1 пункта - то показывай на залоченном экране. Если запустилось просто так - то нет показывать на залоченном экране. условие можешь спокойно передать через extras
Отлавливать в OnCreate и в On NewIntent? Если MainActivity уже висит в памяти, OnCreate не запускается...
источник

ГЗ

Глеб Зыков in Android Developers
Oleg Pchelkin
там есть опционально второй параметр - index. скорее всего тебе нужен именно он)
Ок, попробую)
источник

OP

Oleg Pchelkin in Android Developers
Konstantin Smirnov
Отлавливать в OnCreate и в On NewIntent? Если MainActivity уже висит в памяти, OnCreate не запускается...
если singleTask активити сделать, то тоже не вызовется onCreate? onNewIntent точно должен вызваться как минимум)
источник

KS

Konstantin Smirnov in Android Developers
Oleg Pchelkin
если singleTask активити сделать, то тоже не вызовется onCreate? onNewIntent точно должен вызваться как минимум)
Не открывается MainActivity, если она висела в памяти при вызове.
Из Notification вызываю IncomingActivity так:
Intent openIntent = new Intent(this, IncomingActivity.class);
           openIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           openIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
           openIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
           openIntent.putExtras(bundle);
           PendingIntent flutterPendingIntent = PendingIntent.getActivity(this, 1202, openIntent, PendingIntent.FLAG_UPDATE_CURRENT);

А из IncomingActivity при нажатии на кнопку "принять звонок" так:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
           intent.putExtra("screenIsLocked", true);
           startActivity(intent);
источник

OP

Oleg Pchelkin in Android Developers
Konstantin Smirnov
Не открывается MainActivity, если она висела в памяти при вызове.
Из Notification вызываю IncomingActivity так:
Intent openIntent = new Intent(this, IncomingActivity.class);
           openIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           openIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
           openIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
           openIntent.putExtras(bundle);
           PendingIntent flutterPendingIntent = PendingIntent.getActivity(this, 1202, openIntent, PendingIntent.FLAG_UPDATE_CURRENT);

А из IncomingActivity при нажатии на кнопку "принять звонок" так:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
           intent.putExtra("screenIsLocked", true);
           startActivity(intent);
android:launchMode="singleTask" в манифесте попробуй прописать
источник

d

double_b in Android Developers
double_b
ребят, студио почему-то начало тормозить - после добавлении нового стринга в ресурсы - нигде его индекс не достать (не в активити, не в языковом редакторе) - только после Invalidate Cashe & Restart все становится норм  - но при следующем добавлении ресурса ситуация повторяется - что посоветуете? гугл тоже кроме перезагрузки ничего не посоветовал
может кто встречался с таким? вообще невозможно работать
источник

KS

Konstantin Smirnov in Android Developers
Oleg Pchelkin
android:launchMode="singleTask" в манифесте попробуй прописать
сделал. был singleTop.
Не запускается из IncomingActivity на заблокированномэкране, если до звонка висела MainActivity.
Причем, если экран был разблокирован - то запускается отлично!
источник

KS

Konstantin Smirnov in Android Developers
А вот если убить из памяти - то запустится и с заблокированного экрана
источник