2016-05-04 5 views
0

De nos jours, je suis en train de mettre à jour mon application qui permet d'envoyer des SMS pour multiplier le nombre de destinataires.Android, Réception de diffusion avec l'action Telephony.SMS_RECEIVED lorsque le service est actuellement indisponible

Mon but est de vérifier l'envoi des progrès dans des cas particuliers, par exemple lorsque le service du fournisseur ne sont pas disponibles:

RESULT_ERROR_NO_SERVICE (échec parce que le service est actuellement indisponible)

Avant à l'année je faisais la même et de tout était que le test nécessaire, Quand j'éteignait mon service de fournisseur de téléphone ou envoyer au nombre inhabituel un des cas suivants a été déclenchée:

RESULT_ERROR_GENERIC_FAILURE 
RESULT_ERROR_NO_SERVICE 
RESULT_ERROR_NULL_PDU 
RESULT_ERROR_RADIO_OFF 

Ces cas que je comprends sont reçus dans mon duo de récepteur de diffusion à je demande d'écouter android.provider.Telephony.SMS_RECEIVED action dans mon filtre d'intention de récepteur de diffusion et ces appels proviennent de l'appareil du système. J'ai lu à propos de la priorité des filtres d'intention et ai également vérifié quels broads cast les lecteurs exécutés sur mon système avec queryBroadcastReceivers, a enlevé toutes les applications qui essayent d'écouter la même action et a placé la priorité de filtre à supérieur à SYSTEM_LOW_PRIORITY et inférieur à SYSTEM_HIGH_PRIORITY "(2147483647).

Malheureusement, lorsque j'envoie des SMS lorsque mon fournisseur est éteint mon récepteur de diffusion ne reçoit rien et quand je l'ai retourné tout fonctionne bien.

Quel peut causer le problème?

Merci!

Répondre

0

La diffusion aura différents détails auxquels vous pouvez accéder comme dans mon exemple ci-dessous. Dans mon exemple, s'il y a une erreur que je Grillage simplement l'erreur, mais vous pouvez faire ce que vous voulez

BroadcastReceiver receiver2 = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     switch (getResultCode()) 
     { 
      case Activity.RESULT_OK: 
       Toast.makeText(arg0, "SMS sent", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
       Toast.makeText(arg0, "Generic failure", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_NO_SERVICE: 
       Toast.makeText(arg0, "No service", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_NULL_PDU: 
       Toast.makeText(arg0, "Null PDU", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_RADIO_OFF: 
       Toast.makeText(arg0, "Radio off", 
         Toast.LENGTH_SHORT).show(); 
       break; 
     } 
    } 
}; 

Hope it helps :)

+0

Salut avez-vous lu ma question? –

+0

@StavBodik désolé. Ce serait à cause de l'une ou l'autre de ces raisons. 1. Si le fournisseur est éteint, il ne fait rien. 2. (Ce que je soupçonne) vous avez une autre application SMS comme GoSmsPro installé? –

+0

C'est exactement ce que j'ai vérifié avec queryBroadcastReceivers, j'ai enlevé toutes les applications): et aussi tryd sur un autre périphérique propre, oui mais si raison 1 vrai, RESULT_ERROR_NO_SERVICE devrait être appelé tout ce qui doit être reçu avec le récepteur, ni rien | –