Hi all,
I am trying to implement an application to send multiple messages one
by one using the API function sendTextMessage. As described in SDK
document, I created two PendingIntent as the last parameters:
sentIntent and deliveryIntent to send back which message has been sent
or delivered. But to our surprise, we could only receive the last
message's sent and delivery status, and all previous status are lost.
The detailed code is as following:
mSentCount = 1;
while (mSentCount <= mMOCount) {
if (!mStarted)
return;
// send the message
Log.i(StabilityTest.LOG_TAG,
String.format("sent sms %d starting...", mSentCount));
Intent sentIntent = new Intent();
sentIntent.putExtra(SMS_SENT_KEY_ID, mSentCount);
sentIntent.setAction(ACTION_SMS_SENT);
Intent deliverIntent = new Intent();
deliverIntent.putExtra(SMS_SENT_KEY_ID, mSentCount);
deliverIntent.setAction(ACTION_SMS_DELIVER);
PendingIntent sentPendingIntent =
PendingIntent.getBroadcast(this, 0, sentIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
PendingIntent deliverPendingIntent =
PendingIntent.getBroadcast(this, 0, deliverIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
String content = String.valueOf(mSentCount) + ": " + mSMSContent;
SmsManager.getDefault().sendTextMessage(mPhoneNumber,
null, content,
sentPendingIntent, deliverPendingIntent);
// sleep interval
try {
Thread.sleep(mSentInterval * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (mSentCount == mMOCount)
break;
else {
mSentCount++;
}
}
And I also implement a BroadcastReceiver to receive the PendingIntent:
public class MOSMSResultReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(StabilityTest.LOG_TAG, String.format("new MO result
coming:
%s", intent.getAction()));
if (intent.getAction().equals(ACTION_SMS_SENT)) {
notifyResult(intent, SMS_NOTIFY_SENT_SUCC);
}
else if (intent.getAction().equals(ACTION_SMS_DELIVER)) {
notifyResult(intent, SMS_NOTIFY_DELIVERY_SUCC);
}
}
}
When the receiver receives an intent, it will judge what the type of
intent is, and notify GUI to update the status.
I have tried to increase the interval mSentInterval between two
messages, and the sent/delivery result could receive more times.
>From the observation, it seems that Android ignores many events when
the events of same kinds are flooding in system. My question is how to
resolve this issue?
Any reply will be appreciated.
Thanks,
Stanley
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---