IT Share you

알람을 재설정하기 위해 Android 애플리케이션이 업그레이드되었는지 어떻게 알 수 있습니까?

shareyou 2020. 11. 9. 21:34
반응형

알람을 재설정하기 위해 Android 애플리케이션이 업그레이드되었는지 어떻게 알 수 있습니까?


이 알람을 설정하는 애플리케이션이 업그레이드되었을 때 알람이 비활성화되는 것을 확인했습니다. 사실인가요?

지금까지 애플리케이션의 첫 번째 실행인지 확인하기 위해 키 SharedPreferences와 함께를 사용했습니다 FIRST_RUN. 이 키를 찾지 못하면 경보를 활성화하고 FIRST_RUNfalse로 설정 합니다. 그렇지 않으면 아무 작업도 수행하지 않습니다.

그러나 나는 또한 이러한 환경 설정이 앱 업그레이드 사이에 그대로 남아 있음을 알았습니다!

따라서 업그레이드 후 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:pathOnUpgradeReceiver응용 프로그램의 업그레이드에 의해 트리거되는 것을 방지하기 위해 사용됩니다 .


간단히 들으십시오 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>

참고 URL : https://stackoverflow.com/questions/2133986/how-to-know-my-android-application-has-been-upgraded-in-order-to-reset-an-alarm

반응형