ich benutze diesen Code als BroadcastReceiver:
public void onReceive(Context context, Intent intent)
{
//this stops notifications to others
this.abortBroadcast();
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null)
{
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
str += "SMS from " + msgs[i].getOriginatingAddress();
from = msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
msg = msgs[i].getMessageBody().toString();
str += "\n";
}
if(checksomething){
//make your actions
//and no alert notification and sms not in inbox
}
else{
//continue the normal process of sms and will get alert and reaches inbox
this.clearAbortBroadcast();
}
}
erinnern sie sich in einem offenkundigen hinzuzufügen und eine max Priorität (100) für Broadcast oder SMS wird zunächst auf Posteingang gehen hinzufügen und die Alert-Benachrichtigung zu erhalten.
<receiver android:name=".SmsReceiver">
<intent-filter android:priority="100">
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
Ich hoffe, es hilft Ihnen.
Nun, ich brauche Android, um die Standardmeldung 'Neue Nachricht' NICHT anzuzeigen, wenn meine Anwendung die eingehenden SMS bereits bearbeitet hat. Das ist also eine wichtige Voraussetzung für die beste Benutzererfahrung :( –
Nun, es gibt viele Threads auf StackOverflow, die Ihnen sagen, dass es nicht möglich ist, ohne Ihre eigenen erweiterten Klassen von denen zu verwenden, die versteckt sind ....... aber ja, Sie sind wan warten auf die Antwort anderer auch ......... – viv
Jetzt kann die Methode abortBroadcast(); verwendet werden, um die eingehende Nachricht auf den Posteingang zu beschränken. – AB1209