Récepteur de radiodiffusion ne fonctionne pas pour les SMS
Tout d'abord j'ai déjà cherché des solutions possibles, tout essayé et ça ne fonctionne toujours pas. Quelque chose doit m'échapper.
Je suis en train de créer une application qui reçoit/lit et écrit des SMS.
l'écriture de la partie est fonctionne très bien, mon récepteur de radiodiffusion n'a tout simplement pas attraper de diffusion.
AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
...
<receiver android:name=".SmsReceiver"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
SmsReceiver.java
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "ON RECEIVE BROADCAST", Toast.LENGTH_LONG).show();
Log.d("ON ","RECEIVE");
Bundle bundle = intent.getExtras();
Object[] messages = (Object[]) bundle.get("pdus");
SmsMessage[] sms = new SmsMessage[messages.length];
//Create messages for each incoming PDU
for (int n = 0; n < messages.length; n++) {
sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
for (SmsMessage msg : sms) {
Log.e("RECEIVED MSG",":"+msg.getMessageBody());
//Verify if the message came from our known sender
}
}
aucun des Journaux ou des toasts sont licenciés.
Essayé de changer l'action sur le manifeste de android.intent.action.AIRPLANE_MODE
juste pour tester la déclaration et l'émission a été reçu, n'est tout simplement pas de travail pour les SMS.
Mis à JOUR
Essayé sur un autre téléphone et ça a fonctionné. Doit être parce que j'utilise Handcent SMS, et d'une façon ou son blocage de la diffusion. De toute façon j'en ai besoin pour travailler sur tous les appareils indépendants des applications installées.
- vérifier mon édité réponse , il pourrait travailler pour vous, puisque vous avez mentionné qu'il travaille sur différents appareils
Vous devez vous connecter pour publier un commentaire.
Essayer de déclarer votre récepteur comme suit :
cela fonctionne bien pour moi , j'ai seulement ajouté un indicateur pour dire que ce
receiver is exported
.Edit:
J'ai oublié d'ajouter que la priorité pour le filtre d'intention. utiliser un nombre élevé de priorité.
A trouvé un sujet qui répond à mes doutes: Supprimer /Bloquer BroadcastReceiver dans une autre application.
Même avec la priorité à la maximum possible (999), si une autre application est la même priorité, dans ce cas, le Handcent SMS application, la première application qui va recevoir la diffusion est celui qui a d'abord été installé par l'utilisateur.
Dans mon cas, c'était le Handcent SMS et parce qu'il abandonne l'émission quand il reçoit, mon application ne permet pas de recevoir quoi que ce soit.
J'ai tout essayé et il a travaillé sur de nombreux téléphones, mais pas la mienne,j'ai essayé de demander la permission du rhum de temps (j'ai le nexus 5 version 23).
il a travaillé pour moi.
Comme @Maxime Toyberman dit, vous devez en demander l'autorisation au moment de l'exécution (comme expliqué ici https://stackoverflow.com/a/35972161/3427883 )
fondamentalement, vous devez vous assurer que vous avez la permission de Recevoir le SMS cul suivantes