package com.BirthdayWisherFinal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import android.app.Activity;
import android.app.PendingIntent;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.os.IBinder;
import android.telephony.SmsManager;
import android.util.Log;
import android.widget.Toast;
public class MessageService extends Service{
DBBirthday db;
DBMessage dbmsg;
String curDate;
String data;
Vector<String> vectName;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
//Log.v("Birthday Wisher", "Messaging service called");
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.v("Birthday Wisher", "Messaging service called");
getBirthdateData();
String msgsend = getmessage();
int totalElements = vectName.size();
if (totalElements > 0) {
for (int index = 0; index < totalElements; index++) {
//Log.v("Birthday Wisher", vectName.get(index));
data = vectName.get(index);
String[] dataSplit = data.split(":");
//Log.v("Birthday Wisher", dataSplit[1]+ " "+dataSplit[3] );
if (dataSplit[3].equals("blank")) {
if(!(msgsend == null || msgsend.length() == 0)){
sendSMS(dataSplit[1], msgsend);
}
} else {
sendSMS(dataSplit[1], dataSplit[3]);
}
}
}
return super.onStartCommand(intent, flags, startId);
}
/// to get message from template table
protected String getmessage() {
String messagetemp=null;
dbmsg = new DBMessage(getApplicationContext());
dbmsg.open();
Cursor cs = dbmsg.getMessage();
if (!(cs.getCount() == 0)) {
if (cs.moveToFirst()) {
do {
messagetemp = cs.getString(1);
return messagetemp;
} while (cs.moveToNext());
}
}
cs.close();
dbmsg.close();
return messagetemp;
}
public void getBirthdateData() {
// to get the current date
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM");
String dt = sdf.format(new Date());
Toast.makeText(getApplicationContext(), "Current date " + dt,
Toast.LENGTH_LONG).show();
// get value from database
db = new DBBirthday(this);
vectName = new Vector<String>();
db.open();
Cursor c = db.getBirthdayContacts();
if (c.getCount() == 0) {
Toast.makeText(getApplicationContext(),
Integer.toString(c.getCount()) + " Records found",
Toast.LENGTH_SHORT).show();
return;
} else {
if (c.moveToFirst()) {
do {
/*
* vector will store data whose birth date will match
* current date in the format [
* name:contact:birthdate:message ]
*/
String birthDate = c.getString(3);
Toast.makeText(getApplicationContext(),
"Birthdate " + " " + birthDate, Toast.LENGTH_SHORT)
.show();
if (dt.equals(birthDate)) {
if (c.getString(6).length() == 0) {
vectName.addElement(c.getString(1) + ":"
+ c.getString(2) + ":" + c.getString(3)
+ ":" + "blank");
} else {
vectName.addElement(c.getString(1) + ":"
+ c.getString(2) + ":" + c.getString(3)
+ ":" + c.getString(6));
}
Toast.makeText(getApplicationContext(),
"element added", Toast.LENGTH_SHORT).show();
}
} while (c.moveToNext());
}
c.close();
}
db.close();
}
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);
//registerReceiver(receiver, filter)
//---when the SMS has been sent---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
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(phoneNumber, null, message, sentPI, deliveredPI);
}
}