Cómo filtrar correctamente Paquete reemplazado broadcast
Estoy tratando de capturar el paquete reemplazado de difusión para mi aplicación y sólo mi aplicación, pero por alguna razón en mi reciever soy la transmisión de cada aplicación que se actualiza. Pensé que sólo necesitaba establecer el filtro de intenciones en el archivo de manifiesto para su aplicación, pero tal vez estoy equivocado?
Aquí está mi código (manifiesto):
- declarando el tipo de mime para un "archivo personalizado" que se va a enviar a través de bluetooth
- Detectar el compartidor utilizado para compartir contenido
- Spotify intención en android?
- Redirigir la vista web de Android con el filtro de intenciones
- Android Intent-filter para GEO-URI
<receiver android:name=".UpdateReciever"> <intent-filter> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" android:path="com.my.app" /> </intent-filter> </receiver>
Receptor:
public class AppUpdateReciever extends BroadcastReceiver { @Override public void onReceive(Context con, Intent intent) { //code.. } }
- Actividad de Android sin GUI
- El fragmento no se reanuda con su actividad después de usar el intercambio de intenciones
- IntentService no se está llamando
- Filtro de intenciones sólo para archivos
- Cómo recibir un archivo usando NFC (Android Beam) en Android
- Android: inicia una actividad desde la línea de comandos con la intención uri
- Android BroadcastReceiver sin filtros intencionales
- Android External App Install (en la tarjeta SD), vuelva a cargar las alarmas del alarmmanager al re-montar a través del receptor
Añada esto al método onReceive:
if (intent.getDataString().contains("com.my.app")){ ... }
EDITAR: Tenga en cuenta que al registrarse para ACTION_PACKAGE_REPLACED
, la aplicación se iniciará cada vez que se actualice una aplicación, si aún no estaba abierta. No sé cómo evitar esto antes de la API 12, pero en API 12 puede registrarse para ACTION_MY_PACKAGE_REPLACED
para que no tenga que filtrar la intención y su aplicación no se iniciará innecesariamente por otras aplicaciones que se están actualizando.
Alternativamente, si su código está en una biblioteca que está incluida en varias aplicaciones, o si sólo desea algo que se puede copiar / pegar entre aplicaciones sin ediciones:
int intentUid = intent.getExtras().getInt("android.intent.extra.UID"); int myUid = android.os.Process.myUid(); if (intentUid == myUid) { ... }
- Android: error de "intentar utilizar un mapa de bits reciclado" con Bitmaps temporales
- Envía un enlace al grupo de whatsapp directamente desde el navegador (o desde la aplicación)