2011-03-07 4 views
19

Tout ce que je suis en train de faire est de mettre à jour ma liste de chaque installation & Désinstaller mais pas sur le paquet Remplacer .Donc le principal problème est que l'option Installer & les intentions de désinstallation sont lancés sur chaque action Remplacer.PACKAGE_REMOVED et puis PACKAGE_ADDED sont tirés avec PACKAGE_REPLACED action Intention

Alors Pour cela, j'ont mis en place un BroadcastReciever comme ci-dessous

<receiver android:name =".IntentReceiverTest.AppReciever"> 
    <intent-filter> 
     <action android:name="android.intent.action.PACKAGE_REMOVED"/> 
     <action android:name="android.intent.action.PACKAGE_REPLACED"/> 
     <action android:name="android.intent.action.PACKAGE_ADDED"/> 
     <data android:scheme="package"/> 
    </intent-filter> 
</receiver> 

Sur chaque Remplacer je reçois 3 émissions avec des actions

  • D'abord avec PACKAGE_REMOVED qui tire AppReciever
  • puis après PACKAGE_ADDED qui à nouveau déclenche AppReciever
  • Et puis après quelques secondes PACKAGE_REPLACED qui déclenche à nouveau AppReciever

Alors s'il vous plaît suggérer une meilleure façon d'attraper que remplacer l'action

Ou

un moyen de arrêter les services déjà lancés en raison de PACKAGE_REMOVED et PACKAGE_ADDED action.

+0

Suis-je manque quelque chose au sujet de votre question ou la réponse est simplement « ne pas filtrer les intentions que vous ne voulez pas » ...? – Blrfl

+2

@Blrfl J'ai besoin de 'PACKAGE_REMOVED' &' PACKAGE_ADDED' seulement quand les paquets sont ** installés/désinstallés ** mais pas quand ils sont ** remplacés ** .Lire la 3ème ligne de ma question. – 100rabh

+0

Lisez la deuxième ligne de votre filtre d'intention, puis lisez le commentaire de Birfl, puis relisez la deuxième ligne de votre filtre d'intention. – pawelzieba

Répondre

27

Il suffit de cocher intent.getBooleanExtra(Intent.EXTRA_REPLACING, false):

if (!intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED) && 
    intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) 
    return; 
+0

'Intent.EXTRA_REPLACING' est toujours ajouté à' action.PACKAGE_REMOVED' et 'action_PACKAGE_ADDED' lorsque l'application est mise à jour Lors d'une installation et d'une désinstallation normales, c'est faux. – suku

Questions connexes