Как перезапустить службу переднего плана после обновления приложения в Android Oreo?
Нам нужно перезапустить службу переднего плана нашего приложения после автоматического обновления приложения из Google Play. Для SDK < 26 мы зарегистрировали получателя на actoin PACKAGE_REPLACED, и все работало нормально. Как мы можем сделать то же самое в SDK 26, если неявные намерения запрещены? Благодарю.
1 ответ
Во-первых, не все скрытые трансляции запрещены. Есть белый список.
Во-вторых, ACTION_MY_PACKAGE_CHANGED
явная трансляция, отправленная только вашему приложению. Цитирование документации:
Приложения, предназначенные для Android 8.0 или выше, больше не могут регистрировать приемники широковещания для неявных широковещательных рассылок в своем манифесте. Неявная трансляция - это трансляция, которая не предназначена специально для этого приложения. Например, ACTION_PACKAGE_REPLACED - это неявная широковещательная рассылка, поскольку она отправляется всем зарегистрированным слушателям, давая им знать, что какой-то пакет на устройстве был заменен. Однако ACTION_MY_PACKAGE_REPLACED не является неявной трансляцией, поскольку она отправляется только приложению, пакет которого был заменен, независимо от того, сколько других приложений зарегистрировали прослушиватели для этой трансляции.
Таким образом, вы должны иметь возможность зарегистрироваться на ACTION_MY_PACKAGE_REPLACED
и перезапустите службу там.