알람을 재설정하기 위해 Android 애플리케이션이 업그레이드되었는지 어떻게 알 수 있습니까?
이 알람을 설정하는 애플리케이션이 업그레이드되었을 때 알람이 비활성화되는 것을 확인했습니다. 사실인가요?
지금까지 애플리케이션의 첫 번째 실행인지 확인하기 위해 키 SharedPreferences
와 함께를 사용했습니다 FIRST_RUN
. 이 키를 찾지 못하면 경보를 활성화하고 FIRST_RUN
false로 설정 합니다. 그렇지 않으면 아무 작업도 수행하지 않습니다.
그러나 나는 또한 이러한 환경 설정이 앱 업그레이드 사이에 그대로 남아 있음을 알았습니다!
따라서 업그레이드 후 FIRST_RUN
키가 이미 거짓이므로 알람을 활성화해야하는 동안 아무 작업도하지 않습니다.
그러한 경우를 어떻게 처리합니까?
미리 감사드립니다
나는 이것을 직접 시도한 적이 없지만 의도 BroadcastReceiver
를 듣는 것을 만드는 것은 ACTION_PACKAGE_REPLACED
어떨까요?
전에 시도해 본 적이 있지만 닭고기와 계란 문제가 있는지 확실하지 않습니다 (예 : 새 업그레이드 된 응용 프로그램이 수신하기 전에 Intent가 전송됩니까?). 그래도 시도할만한 가치가 있습니다.
Daniel Lew의 솔루션 :
매니페스트에 다음 줄이있는 수신기가 필요합니다.
<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
OnUpgradeReceiver
응용 프로그램의 업그레이드에 의해 트리거되는 것을 방지하기 위해 사용됩니다 .
간단히 들으십시오 android.intent.action.MY_PACKAGE_REPLACED
... INTENT
기존 버전 위에 새 버전의 응용 프로그램이 설치된 경우 알려줍니다.
참고 :이 인 텐트는 API 12부터 사용할 수 있습니다.
Android OS v12 이상에서는 ACTION_MY_PACKAGE_REPLACED 작업으로 BroadcastReceiver를 등록해야합니다.
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
'IT Share you' 카테고리의 다른 글
Linq를 사용하여 쉼표로 구분 된 문자열 반환 (0) | 2020.11.09 |
---|---|
농가 설치 (0) | 2020.11.09 |
암호화 보안 난수 생성기는 어떻게 작동합니까? (0) | 2020.11.09 |
Android 창이 란 무엇입니까? (0) | 2020.11.09 |
배열을 반복하고 JavaScript에서 요소를 제거하는 방법 (0) | 2020.11.09 |