1.hello我需要帮助我正在构建一个应用程序,在数据库中存储数据,如日期,时间,电话号码和消息,并根据时间和日期sms应自动发送,通过从数据库中检索数据保存的日期和时间,我已完成以下代码
public class MainActivity extends Activity implements OnClickListener {
// Widget GUI
Button btnCalendar, btnTimePicker,btnset;
EditText txtDate, txtTime,txtpno,txtmsg;
//String pno,msg,date,time;
// Variable for storing current date and time
private int mYear, mMonth, mDay, mHour, mMinute;
private PendingIntent pendingIntent;
SQLiteDatabase mdatabase=null;
String pno,msg,date,time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mdatabase=openOrCreateDatabase("timedb", SQLiteDatabase.CREATE_IF_NECESSARY, null);
String Time_TABLE="create table if not exists SmsTime (pno TEXT PRIMARY KEY,msg TEXT,date TEXT,time TEXT)";
mdatabase.execSQL(Time_TABLE);
mdatabase.close();
btnCalendar = (Button) findViewById(R.id.btnCalendar);
btnTimePicker = (Button) findViewById(R.id.btnTimePicker);
btnset=(Button) findViewById(R.id.btnset);
txtDate = (EditText) findViewById(R.id.txtDate);
txtTime = (EditText) findViewById(R.id.txtTime);
txtpno=(EditText) findViewById(R.id.txtpno);
txtmsg=(EditText) findViewById(R.id.txtmsg);
btnCalendar.setOnClickListener(this);
btnTimePicker.setOnClickListener(this);
btnset.setOnClickListener(this);
final Handler h=new Handler();
mdatabase=openOrCreateDatabase("timedb", SQLiteDatabase.OPEN_READONLY, null);
final Cursor c=mdatabase.query("SmsTime", null,null, null, null, null, null);
startManagingCursor(c);
if(c.getCount()==0){
Toast.makeText(getApplicationContext(), "NO record found", Toast.LENGTH_LONG).show();
}
else{
c.moveToFirst();
while(c.isAfterLast()==false){
pno=c.getString(0);
msg=c.getString(1);
date=c.getString(2);
time=c.getString(3);
Toast.makeText(getApplicationContext(), "Data"+pno+" "+msg+" "+date+" "+time, Toast.LENGTH_LONG).show();
SimpleDateFormat dateFormat1 = new SimpleDateFormat("HH:mm");
Date date1 = null;
try {
date1 = dateFormat1.parse(time);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int date1hh=date1.getHours();
int date1mm=date1.getMinutes();
Toast.makeText(getApplicationContext(), "hh:"+date1hh+"mm:"+date1mm,Toast.LENGTH_LONG).show();
SimpleDateFormat dateFormat2 = new SimpleDateFormat("dd-MM-yyyy");
Date date2 = null;
try {
date2 = dateFormat2.parse(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "date"+date2, Toast.LENGTH_LONG).show();
int date2yy=date2.getYear()+1900;
int date2mm=date2.getMonth()+1;
int date2dd=date2.getDate();
Calendar zCalendarL = Calendar.getInstance();
SimpleDateFormat zDateFormatL = new SimpleDateFormat("yyyy/MM/dd HH:mm");
String DateTime=date2yy+"/"+date2mm+"/"+date2dd+" "+date1hh+":"+date1mm;
//String DateTime="2014/01/31 13:00";
Date d1 = null;
try {
d1 = zDateFormatL.parse(DateTime);
//d1 = zDateFormatL.parse(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long diff =Math.abs(System.currentTimeMillis() - d1.getTime()) ;
long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diff);
final int sec=(int)diffInSec;
Toast.makeText(getApplicationContext(), "diff::"+String.valueOf(sec), Toast.LENGTH_LONG).show();
//Toast.makeText(getApplicationContext(), "diff::"+String.valueOf(diffInSec), Toast.LENGTH_LONG).show();
//Toast.makeText(getApplicationContext(), "year:"+date2yy+"month:"+date2mm+"day"+date2dd,Toast.LENGTH_LONG).show();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(sec*1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
h.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(pno, null, msg, null, null);
Toast.makeText(getApplicationContext(), "Message is sent", Toast.LENGTH_LONG).show();
}
});
}
}).start();
c.moveToNext();
}
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v == btnCalendar) {
// Process to get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
// Launch Date Picker Dialog
DatePickerDialog dpd = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
// Display Selected date in textbox
txtDate.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
dpd.show();
}
if (v == btnTimePicker) {
// Process to get Current Time
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
TimePickerDialog tpd = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
// Display Selected time in textbox
txtTime.setText(hourOfDay + ":" + minute);
}
}, mHour, mMinute, false);
tpd.show();
}
if(v==btnset){
ContentValues values=new ContentValues();
values.put("pno", txtpno.getText().toString());
values.put("msg", txtmsg.getText().toString());
values.put("date", txtDate.getText().toString());
values.put("time", txtTime.getText().toString());
mdatabase=openOrCreateDatabase("timedb", SQLiteDatabase.OPEN_READWRITE, null);
long newid=mdatabase.insert("SmsTime", null, values);
//mdatabase.delete("SmsTime", null, null);
Toast.makeText(getApplicationContext(),"Record inserted Succesfully", Toast.LENGTH_LONG).show();
txtpno.setText("");
txtmsg.setText("");
txtDate.setText("");
txtTime.setText("");
mdatabase.close();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
2.现在问题是它一次只发送一个短信从数据库发送另一个短程序应该运行程序,我应该如何使用此代码中的服务请帮助我。