0
receiver..Receiving I gleiche Nachricht zweimal in einem Gespräch empfängt.Android .... Stimmt etwas nicht mit meiner SMS-Nachrichten zweimal
Vielleicht, ich habe etwas falsch in meinem Empfänger.
Würde mir bitte helfen zu finden?
public class SmsReceiver extends BroadcastReceiver {
private final String TAG = "MessagingReceiver";
private Context mContext;
private SharedPreferences mPrefs;
private String mAddress;
private String mBody;
private long mDate;
private Uri mUri;
public static final String SMS_URI = "content://sms";
public static final Uri RECEIVED_MESSAGE_CONTENT_PROVIDER = Uri.parse("content://sms/inbox");
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "onReceive");
abortBroadcast();
mContext = context;
mPrefs = PreferenceManager.getDefaultSharedPreferences(context);
if (intent.getExtras() != null) {
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
SmsMessage sms = messages[0];
if (messages.length == 1 || sms.isReplace()) {
mBody = sms.getDisplayMessageBody();
} else {
StringBuilder bodyText = new StringBuilder();
for (SmsMessage message : messages) {
bodyText.append(message.getMessageBody());
}
mBody = bodyText.toString();
}
mAddress = sms.getDisplayOriginatingAddress();
mDate = sms.getTimestampMillis();
addMessageToInbox(mContext, mAddress, mBody, mDate);
}
}
public static Uri addMessageToInbox(Context context, String address, String body, long time) {
ContentResolver contentResolver = context.getContentResolver();
ContentValues cv = new ContentValues();
cv.put("address", address);
cv.put("body", body);
cv.put("date_sent", time);
return contentResolver.insert(RECEIVED_MESSAGE_CONTENT_PROVIDER, cv);
}
}
Manifest.xml
<receiver android:name=".SmsReceiver"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
Haben Sie überprüft, ob OnReceive() zweimal aufgerufen wird? Setzen Sie einige Protokollnachrichten und überprüfen Sie, ob onReceive() zweimal aufgerufen wird ... teilen Sie auch Ihr Manifest, wo Sie den intent-filter definieren – W0rmH0le
Ein weiterer Punkt: Drucken Sie die in onReceive empfangene Aktion: "Log.d (" TEST ", intent. getAction()); " Auf diese Weise können Sie sehen, ob Sie die gleiche Aktion zweimal erhalten ... oder wenn die Aktion anders ist .... Überprüfen Sie auch, ob Sie Ihre Übertragung nur im Manifest (Absichtsfilter) registrieren oder wenn Sie sie zweimal registriert haben – W0rmH0le
Groß .. Lassen Sie uns überprüfen, welche Aktion Sie in onReceive() erhalten haben (teilen Sie auch Ihre manifest.xml - nur den Teil, wo Sie den Intent-Filter definieren). – W0rmH0le