根据日期和时间自动发送短信

时间:2014-02-21 10:09:42

标签: android service smsmanager

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.现在问题是它一次只发送一个短信从数据库发送另一个短程序应该运行程序,我应该如何使用此代码中的服务请帮助我。

0 个答案:

没有答案