2017-06-13 3 views
0

Dans mon application lorsque nous recevons le message, besoin d'afficher un pop-up avec message pré-rempli. Pour cela, j'utilisé le code suivant dans le fichier manifesterécepteur de diffusion SMS ne se déclenche pas après un jour

<receiver 
     android:name="com.cte.broadcast.SMS_Receive_BroadCast" 
     android:enabled="false"> 
     <intent-filter> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 

Et chaque fois que l'application est connexion, enregistrer le récepteur de diffusion en utilisant le code suivant

  ComponentName component = new ComponentName(getApplicationContext(), 
         SMS_Receive_BroadCast.class); 
       getApplicationContext().getPackageManager().setComponentEnabledSetting(component, 
         PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 
         PackageManager.DONT_KILL_APP); 

Et chaque fois que l'application est connexion désinscription le récepteur de radiodiffusion en utilisant le code suivant

ComponentName component_sms = new ComponentName(context.getApplicationContext(), 
       SMS_Receive_BroadCast.class); 
     getApplicationContext().getPackageManager().setComponentEnabledSetting(component_sms, 
       PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
       PackageManager.DONT_KILL_APP); 

alors ici tout fonctionne bien. quand jamais nous nous sommes connectés et chaque fois que nous obtenons le déclencheur récepteur de diffusion de message et de faire pop up même l'application est fermée. et déconnecté ne recevant pas déclencher le récepteur de diffusion et ne pas faire pop-up. Donc, jusqu'à ce que tout va bien. Mais le problème est après un jour chaque fois que nous recevons le message que le récepteur de diffusion ne se déclenche pas, même s'il est connecté. Mais chaque fois que nous ouvrons l'application et la ferment, alors cela fonctionnera bien. Le problème est donc après un certain récepteur de radiodiffusion de temps est automatiquement unregisterd je pense ..

Alors, comment résoudre ce problem..Thanks En avance ..

+0

Quel appareil ou dispositifs rencontrez ce problème vous? –

+0

a rencontré le problème dans tous les périphériques – rams

+0

Quand/où paramétrez-vous le composant sur DISABLED? –

Répondre

1

Certaines applications interrompent votre diffusion sur l'intention qui empêchera d'autres applications de recevoir l'intention.

La solution est d'augmenter l'attribut android:priority dans la balise filtre intention:

<intent-filter android:priority="priority value"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
</intent-filter> 
+0

Salut, merci pour votre réponse rapide .. quelle est la valeur de priorité ici – rams

+0

@rams: vous pouvez le donner comme 500 – KishuDroid

+0

Cela n'a aucun sens. Si cela fonctionne (en général), mais ne fonctionne pas après un certain temps, il est hautement improbable qu'une autre application empêche la «Intent» de diffusion d'être vu par l'application OP. –

0

J'ai eu un trouble similaire. Je ne sais pas exactement pourquoi, mais en fonction de vous mettez votre registerBroadcast, android va tuer cette instance, c'est quelque chose lié à la pile d'exécution des processus sur Linux. Ce que j'ai fait pour résoudre le problème: créer un service d'arrière-plan au lieu d'un BroadcastReceiver, là vous enregistrez votre BR et cela fonctionnera bien, plusieurs jours =)))!

+0

merci. pour votre réponse .. quand arrêter le service et quand désenregistrer le récepteur de diffusion .. là – rams

+0

Vous arrêterez le service quand vous voulez. Appelez simplement stopService(); Pour enregistrer et annuler l'enregistrement de broadcastReceiver, vous pouvez utiliser le lifecyle du service, les fonctions onCreate() et onDestroy()! –

+0

merci beaucoup ... quel est l'intervalle de temps pour commencer le service ici.signifie que toutes les heures ou 2 heures comme ceci – rams