SMS程序将相同的内容发送到同一个电话号码

时间:2011-05-24 06:56:59

标签: android service sms alarm

我必须做一个安排短信程序,一切正常,除了唯一的一个:第二次我尝试发送短信,程序发送与第一个相同的内容,到同一个电话号码和第一次一样。 这是我的代码:

main_activity,sendBtn:

sendBtn.setOnClickListener(new Button.OnClickListener(){

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            try { 
                Intent myIntent = new Intent(main_activity.this, MyAlarmService.class);

                String smsNumber = phoneNo.getText().toString();
                String smsText = edit.getText().toString();

                if (smsNumber.length() != 0 && smsText.length() != 0){


                    Bundle bundle = new Bundle();
                    bundle.putCharSequence("extraSmsNumber", smsNumber);
                    bundle.putCharSequence("extraSmsText", smsText);
                    myIntent.putExtras(bundle);
                    String text = mTimeDisplay.getText().toString() + " " + mDateDisplay.getText().toString();


                    DateFormat formatter ; 
                    Date date ; 
                    formatter = new SimpleDateFormat("HH:mm dd/MM/yyyy");
                    date = (Date)formatter.parse(text);


                    Calendar setCalendar = Calendar.getInstance();
                    setCalendar.setTime(date);


                    pendingIntent = PendingIntent.getService(main_activity.this, 0, myIntent, 0);

                    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

                    Calendar calendar = Calendar.getInstance();                

                    calendar.setTimeInMillis(System.currentTimeMillis());
                    alarmManager.set(AlarmManager.RTC_WAKEUP, setCalendar.getTimeInMillis(), pendingIntent);

                    Toast.makeText(main_activity.this,
                            "Start Alarm with \n" +
                            "smsNumber = " + smsNumber + "\n" +
                            "smsText = " + smsText + "\n Contain : " + text,
                            Toast.LENGTH_LONG).show();

                }
                else {
                    showDialog(ALERT_DIALOG_ID);
                }
            }
            catch (ParseException e)
            {Toast.makeText(main_activity.this,"Error!!!",Toast.LENGTH_LONG).show();    }
        }
    }
    );

MyAlarmService:

import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.telephony.SmsManager;
import android.widget.Toast;

public class MyAlarmService extends Service {

String smsNumberToSend, smsTextToSend;

@Override
public void onCreate() {
    // TODO Auto-generated method stub

    Toast.makeText(this, "MyAlarmService.onCreate()", Toast.LENGTH_LONG).show();
}

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

@Override
public void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    Toast.makeText(this, "MyAlarmService.onDestroy()", Toast.LENGTH_LONG).show();
}

@Override
public void onStart(Intent intent, int startId) {
    // TODO Auto-generated method stub
    super.onStart(intent, startId);

    Bundle bundle = intent.getExtras();
    smsNumberToSend = (String) bundle.getCharSequence("extraSmsNumber");
    smsTextToSend = (String) bundle.getCharSequence("extraSmsText");

    sendSMS(smsNumberToSend, smsTextToSend);
}

private void sendSMS(String phoneNumber, String message)
{   
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, null, null);    

}

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

}

我真的需要帮助,PLZ帮助我尽快找到解决方案,很多

1 个答案:

答案 0 :(得分:0)

你的问题在于:

pendingIntent = PendingIntent.getService(main_activity.this, 0, myIntent, 0);

首先,您需要添加一个标志,以便每次都不会重复使用创建的PendingIntent。

然后您需要添加一些唯一的请求代码,否则将取消和替换之前的PendingIntent。即,如果您要安排发送两条短信,则只发送最后一条短信。

pendingIntent = PendingIntent.getService(main_activity.this, SOMETHING_UNIQUE, myIntent, PendingIntent.FLAG_ONE_SHOT);