AlertDialog à partir de BroadcastReceiver ?? Peut-il être fait?
AlertDialog de l'intérieur BroadcastReceiver? Peut-il être fait? Je suis en train de travailler sur une application qui fera apparaître une boîte de Dialogue si je reçois un SMS. Je suis en train de code à l'intérieur d'un BroadcaseReceiver. Mais je ne peux pas utiliser cette ligne de code AlertDialog.Builder builder = new AlertDialog.Builder(this);
. Quelqu'un peut-il m'aider avec un soupçon!
public class SMSPopUpReceiver extends BroadcastReceiver {
private static final String LOG_TAG = "SMSReceiver";
public static final int NOTIFICATION_ID_RECEIVED = 0x1221;
static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
public void onReceive(Context context, Intent intent) {
Log.i(LOG_TAG, "onReceive");
if (intent.getAction().equals(SMSPopUpReceiver.ACTION)) {
StringBuilder sb = new StringBuilder();
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (Object pdu : pdus){
SmsMessage messages =
SmsMessage.createFromPdu((byte[]) pdu);
sb.append("Received SMS\nFrom: ");
sb.append(messages.getDisplayOriginatingAddress());
sb.append("\n----Message----\n");
sb.append( messages.getDisplayMessageBody());
}
}
Log.i(SMSPopUpReceiver.LOG_TAG,
"[SMSApp] onReceiveIntent: " + sb);
Toast.makeText
(context, sb.toString(), Toast.LENGTH_LONG).show();
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
}
}
source d'informationauteur Java Review
Vous devez vous connecter pour publier un commentaire.
Principal problème: essayez d'éviter de placer beaucoup de temps de fonctionnalités dans BroadcastReceiver. Il faut juste de recevoir et d'initier un traitement supplémentaire lié à l'Activité/Service.
Mise à JOUR:
Veuillez vérifier les sources suivantes qui peuvent être utiles:
Des questions similaires sur StackOverflow:
Comment envoyer des données à partir de BroadcastReceiver à une Activité dans android?
Android SMS récepteur ne fonctionne pas
Android SDK démo exemple:
android-sdk-windows\samples\android-8\ApiDemos\src\com\example\android\apis\os\SmsMessagingDemo.java
Et bien sûr Android standard documentation de l'API: http://developer.android.com/reference/android/content/BroadcastReceiver.html
UPDATE2:
Ajouté app squelette comme il devrait ressembler. Veuillez noter que le contenu de l'affichage est défini. C'est parce que votre application dispose d'écran transparent. Pour atteindre cet
@android:style/Thème.Translucide
est inscrit sous le Thème de la balise pour cette activité dans AndroidManifest.xml.
J'ai été à la recherche en elle et la documentation de la BroadcastReceiver dit:
Vous ne pouvez pas lancer une fenêtre de dialogue dans
votre mise en œuvre de onReceive()
Il semble donc qu'il n'est pas possible
C'est tard, mais cela peut aider quelqu'un.
Vous ne pouvez pas utiliser la boîte de dialogue d'alerte à l'intérieur de récepteur de radiodiffusion, nous pouvons utiliser ce que dans l'activité ou du service. Essayez comme ceci
Dans votre méthode onReceive de broadcastreceiver ajouter
et dans yourclass configurer votre boîte de dialogue de message, afin qu'elle s'affiche lorsque vous déclenchez le récepteur de l'événement. J'ai essayé et cela a fonctionné pour moi. Espérons que cela peut aider quelqu'un 🙂
vous pouvez créer un nouveau transparent activité et créer de la boîte de Dialogue d'Alerte de l'activité, dès lors que l'alerte est affiché appel de cette activité à partir de votre récepteur de radiodiffusion ,cela pourrait fonctionner, non testé
remplacer le mot "présent" à l'intérieur de la AlertDilaog avec "contexte" -- le premier paramètre sur vous onRecieve méthode.