My application retrieves records from sqlite database and SMS to other application by merging the records based on the size of the record, i am intruble to identify which messages have got the delivery report and which does'not . i am using BroadcastReceiver on reciveMethods but unfortunately i can't understand how to identify . i would love if any one of you suggest me the how to handle this problem. or any other better way
public class MessageMangerActivity extends Activity {
private String MessageBody;
public enum MessageType
{
s,r,c
}
String ReceiverNumber="5556";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.messages);
try {
SubmitReportToServer();
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
private void SubmitReportToServer() throws Exception {
// MessageHandler messageHandler =new MessageHandler();
//get Unsent Message
ReportAdapter reportAdapter= new ReportAdapter(this);
reportAdapter.open();
/* Submit Received Item report*/
Cursor receivingResults;
receivingResults=reportAdapter.FetchUnSentReceivingRecords();
int i=0;
if(receivingResults.getCount()!=-1) {
while(receivingResults.moveToNext() ){
MessageBody=MessageType.r + MessageBody +"|"+ receivingResults.getString(0)+"|" + receivingResults.getString(1)+"|"+receivingResults.getString(2)+"|"+
receivingResults.getString(3)+"|"+receivingResults.getString(4)+"|"+receivingResults.getString(5)+"|"+receivingResults.getString(6)+"|"+
receivingResults.getString(7)+"|" + receivingResults.getString(8)+"|"+ receivingResults.getString(9)+"|"+
receivingResults.getString(10)+"|"+receivingResults.getString(11)+",";
i++;
if (i > 1 ) { break; }
}
sendSMS(ReceiverNumber,MessageBody);
receivingResults.close();
/* Submit Issued Item report*/
Cursor issueResults;
issueResults=reportAdapter.FetchUnSentIssuedRecords();
i=0;
if(issueResults.getCount()!=-1) {
while(issueResults.moveToNext() ){
MessageBody=MessageBody + ","+ issueResults.getExtras();
i++;
if (i > 3 ) { break; }
}
sendSMS(ReceiverNumber,MessageBody);
issueResults.close();
}
}
/*Submit Vaccinated Children Report */
Cursor childrenResults;
childrenResults=reportAdapter.FetchUnSentVaccinatedChildrenRecords();
i=0;
if(childrenResults.getCount()!=-1) {
while(childrenResults.moveToNext() ){
MessageBody=MessageBody + ","+ childrenResults.toString();
i++;
if (i > 3 ) { break; }
}
sendSMS(ReceiverNumber,MessageBody);
childrenResults.close();
}
}
private void sendSMS(String receiverNumber, String messageBody) {
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
//update Status
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SENT));
//—when the SMS has been delivered—
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS delivered",
Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not delivered",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED));
`` SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(receiverNumber, null, messageBody, sentPI, deliveredPI);
}
}