Я заметил, что тревога отключена, когда применение, которое поставило этот будильник, было модернизировано. Это верно?
До сих пор я использовал SharedPreferences
с a FIRST_RUN
ключ, чтобы знать, является ли это первый показ моего заявления. Если я не нахожу этот ключ, я позволяю тревогу и устанавливаю FIRST_RUN
к ложному еще я ничего не делаю.
Но я заметил также, что эти предпочтения остаются неповрежденными между модернизацией приложения!
Таким образом, после модернизации, FIRST_RUN
ключ уже ложный, таким образом, я ничего не делаю в то время как моя сигнальная потребность, которая будет позволена.
Как обращаться с таким случаем?
Заранее спасибо
Я никогда не пробовал это сам, но как насчет создания , который слушает
, который слушает Action_package_replace
actent?
Я думал о том, чтобы попробовать это раньше, но я «Не уверена, что есть проблема с курицей и яйцом или нет) или нет (например, намерение отправлено до того, как новое обновленное приложение может его получить?). Стоит попробовать, хотя.
Решение Даниэля Лью:
нужен приемник со следующими линиями в манифесте:
<receiver android:name=".OnUpgradeReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" android:path="your.app.package" />
</intent-filter>
</receiver>
Android: PATH
используется для предотвращения OnupGradeReiver
, который должен быть вызван любым модернизом любое приложение.