This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Java Micro Edition and the fly likes send scheduling sms through android Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Mobile » Java Micro Edition
Bookmark "send scheduling sms through android" Watch "send scheduling sms through android" New topic
Author

send scheduling sms through android

jazz cool
Greenhorn

Joined: Mar 10, 2011
Posts: 2
i had used the sms manager for sending sms
but bot facing problem if i want to send more than one schedule message

my code is..

public class alaramservice extends Service
{
int prefName,pref_resend;
DatabaseConnectionAPI con;
Cursor curText,curContacts;
String subject,body;
String strcontacts=" ";
String[] contacts;
Context ctx;
setAlarm sa;
SharedPreferences msgid_resend;
Editor prefsEditor_resend;
int[] msg_resendShare;
int flag;

@Override
public void onCreate()
{ // TODO Auto-generated method stub
System.out.println("on create called..");
con = new DatabaseConnectionAPI(alaramservice.this);
ctx=this;

con = new DatabaseConnectionAPI(ctx);
try
{
con.createDataBase();
}
catch (Exception e)
{
System.out.println("The database couldnt be started from service "+ e);

}

msgid_resend = ctx.getSharedPreferences("preference_resend", Context.MODE_WORLD_READABLE);
prefsEditor_resend = msgid_resend.edit();

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
prefName = myPrefs.getInt("sendid", 0);
System.out.println("message id got through shared preferences.."+prefName);
// Toast.makeText(this, "alarmservice.onCreate()", Toast.LENGTH_LONG).show();
}

@Override
public void onStart(Intent intent, int startId)
{ // TODO Auto-generated method stub
super.onStart(intent, startId);
String mid=Integer.toString(prefName);
System.out.println("on start called..and msg id got @@@@@@@@@@@@@@@@@@"+mid);

// for sending failure messages first whenever service called

Cursor sendagain=con.onFireQueryGetCursor("select a1.msg_text,a2.contact_no,a1.msg_id from msg_table a1,master_table a2 where a1.msg_id=a2.msg_id and (a2.remark <> \"result_ok\")");
System.out.println("number of failed messages"+sendagain.getCount());
sendagain.moveToFirst();

for(int i=0;i<sendagain.getCount();i++)
{

prefsEditor_resend.putInt("resendid", sendagain.getInt(2));
prefsEditor_resend.commit();

pref_resend=msgid_resend.getInt("resendid", 0);
System.out.println("@@@ id of message for resending"+pref_resend);
System.out.println("contact...."+sendagain.getString(1));
flag=0;
sendSMS(sendagain.getString(1),sendagain.getString(0));
sendagain.moveToNext();
}


// start service newly arrived messages

curText=con.onQueryGetCursor("msg_table", new String[] {"msg_subject","msg_text"}, "msg_id=?", new String[] {mid}, null, null, null);
curText.moveToFirst();
subject=curText.getString(0);
body=curText.getString(1);


curContacts=con.onQueryGetCursor("master_table", new String[] {"contact_no"}, "msg_id=?", new String[] {mid}, null, null, null);
curContacts.moveToFirst();
System.out.println("number of messages to send..."+ curContacts.getCount());

for(int i=0;i<curContacts.getCount();i++)
{
System.out.println("contact numbers ...."+curContacts.getString(0));
flag=1;
sendSMS(curContacts.getString(0),body);
curContacts.moveToNext();
}
updateData();

Toast.makeText(this, "alarmservice started", Toast.LENGTH_LONG).show();

stopSelf();
}


private void sendSMS(String phoneNumber, String message)
{
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);


//---when the SMS has been sent---

registerReceiver(new BroadcastReceiver()
{
@Override
public void onReceive(Context arg0, Intent arg1)
{
String idtochange="";
if(flag==0)
{
System.out.println("for resending idssss");
idtochange=Integer.toString(pref_resend);
}
if(flag==1)
{
idtochange= Integer.toString(prefName);
}

System.out.println("the result code...."+getResultCode());
switch (getResultCode())
{
case Activity.RESULT_OK:
System.out.println("updating from pending to sent....");
Toast.makeText(arg0, "SMS sent",Toast.LENGTH_LONG).show();

con.onUpdateSet("master_table", "trans_status","sent", new String[] {"msg_id"},new String[] {idtochange});
con.onUpdateSet("master_table", "remark", "result_ok", new String[] {"msg_id"},new String[] {idtochange});
break;

case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
System.out.println("failed because of some problem...........");
Toast.makeText(arg0, "Generic failure",Toast.LENGTH_LONG).show();
con.onUpdateSet("master_table", "remark", "generic_failure", new String[] {"msg_id"},new String[] {idtochange});
break;

case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",Toast.LENGTH_LONG).show();
con.onUpdateSet("master_table", "remark", "no_serivce", new String[] {"msg_id"},new String[] {idtochange});
break;

case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",Toast.LENGTH_LONG).show();
con.onUpdateSet("master_table", "remark", "null_pdu", new String[] {"msg_id"},new String[] {idtochange});
break;

case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",Toast.LENGTH_SHORT).show();
con.onUpdateSet("master_table", "remark", "radio_off", new String[] {"msg_id"},new String[] {idtochange});
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_LONG).show();
break;

case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not delivered",Toast.LENGTH_SHORT).show();
break;
}
}

}, new IntentFilter(DELIVERED));

SmsManager sms = SmsManager.getDefault();
System.out.println("contactsssss"+phoneNumber);
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);

}

public void updateData()
{
System.out.println("helllooo called for sending another message from alarm manager");
sa = new setAlarm(ctx);
sa.setMinMsgID();
}


@Override
public IBinder onBind(Intent intent)
{ // TODO Auto-generated method stub
Toast.makeText(this, "alarmservice.onBind()", Toast.LENGTH_SHORT).show();
return null;
}

@Override
public void onDestroy()
{ // TODO Auto-generated method stub
try
{
con.close();
}
catch (Exception e)
{
System.out.println("The database couldnt be started from service "+ e);

}
super.onDestroy();
Toast.makeText(this, "alarmservice.onDestroy()", Toast.LENGTH_SHORT).show();
}


@Override
public boolean onUnbind(Intent intent)
{ // TODO Auto-generated method stub
Toast.makeText(this, "alarmservice.onUnbind()", Toast.LENGTH_SHORT).show();
return super.onUnbind(intent);
}

}


through update method i use to call once again alarm class for setting next nearest alarm to fire
Tim Holloway
Saloon Keeper

Joined: Jun 25, 2001
Posts: 15962
    
  19

"Jazz Cool",

We don't have many rules here at the JavaRanch, but we do insist that you use your Real Name and not some sort of "handle" or obvious alias. If you're not sure about this, see
http://www.javaranch.com/name.jsp .

A lot of people here won't bother to answer a post that has an invalid display name on it or is full of non-English words (includins SMS/733tsp3k", so it's worth your while to take a little time and make things look professional. After all, we have our image to maintain (see our logo? )


Customer surveys are for companies who didn't pay proper attention to begin with.
 
wood burning stoves
 
subject: send scheduling sms through android
 
Similar Threads
How to retrieve string from EditText?
Beginning Android, activity / service question
Create service to run after time
How to find out programatically that file is already exist or not?
Application not run in the background