¿Cómo sé que mi aplicación Android se ha actualizado para restablecer una alarma?

Noté que una alarma se deshabilita cuando la aplicación que configura esta alarma se ha actualizado. Es eso cierto ?

Hasta ahora, utilicé SharedPreferences con una clave FIRST_RUN para saber si es la primera ejecución de mi aplicación. Si no encuentro esta clave, FIRST_RUN la alarma y establezco FIRST_RUN en falso, de lo contrario no hago nada.

¡Pero también noté que estas preferencias permanecen intactas entre la actualización de la aplicación!

Entonces, después de una actualización, la clave FIRST_RUN ya es falsa, así que no hago nada mientras mi alarma necesita estar habilitada.

¿Cómo manejar ese caso?

Gracias por adelantado

Nunca lo intenté yo mismo, pero ¿qué tal crear un BroadcastReceiver que escuche el ACTION_PACKAGE_REPLACED Intent?

He pensado en probar esto antes, pero no estoy seguro de si hay un problema con la gallina y el huevo o no (por ejemplo, ¿se envía el Intento antes de que la nueva aplicación actualizada pueda recibirlo?). Vale la pena intentarlo, sin embargo.

Solución por Daniel Lew:

Necesita un receptor con las siguientes líneas en manifiesto:

       

android:path se usa para evitar que OnUpgradeReceiver sea ​​activado por cualquier actualización de cualquier aplicación.

Simplemente, escucha el android.intent.action.MY_PACKAGE_REPLACED … Este INTENT te notificará si se ha instalado una nueva versión de tu aplicación sobre una existente

Nota: Esta lata de intención está disponible a partir de API 12

Para Android OS v12 y superior, debe registrar BroadcastReceiver con la acción ACTION_MY_PACKAGE_REPLACED