Привет всем вам в Stackoverflow.
У меня возникла эта невероятно раздражающая проблема.Я пытаюсь создать приложение SMS, которое будет отправлять SMS в определенное время с помощью AlarmManager.И достаточно забавно (потому что это казалось самым сложным), отправка SMS в определенное время работает безупречно, но меня радует (или убивает) то, что он может только отправлять SMS после того, как я дважды щелкнул по кнопке ?!
У кого-нибудь появилась идея, потому что я скоро схожу с ума, пытаясь часами.
Приведенный ниже код является кодом для события Button.click:
public void onClick(View arg0)
{
// TODO Auto-generated method stub
//txtClear();
try {
Intent myIntent = new Intent(SMSAlarm.this, MyAlarmService.class);
smsNumber = txtPhoneNo.getText().toString();
smsText = txtMessage.getText().toString();
// if(smsNumber.length()<=0 || smsText.length()<=0)
// {
// Toast.makeText(getBaseContext(),
// "Please enter both phone number and message",
// Toast.LENGTH_SHORT).show();
// }
// else
// {
TimePicker timePickerAlarm = (TimePicker) findViewById(R.id.timePickerAlarm);
DatePicker datePick = (DatePicker) findViewById(R.id.datePickerAlarm);
Calendar calendar = calendarInformation(timePickerAlarm,
datePick);
Calendar today = Calendar.getInstance();
//Check if chosen date is less than the current date and time
//IF True, inform the user that the selected date has passed
//ELSE, start the service for sending SMS
// if(calendar.getTime().getTime() <= today.getTime().getTime())
// {
// Toast.makeText(getBaseContext(), "Date has passed!\nPlease choose a new date", Toast.LENGTH_LONG).show();
// }
// else
// {
Toast.makeText(SMSAlarm.this,
"Start Alarm with \n" +
"smsNumber = " + smsNumber + "\n" +
"smsText = " + smsText,
Toast.LENGTH_LONG).show();
Bundle bundle = new Bundle();
bundle.putCharSequence("extraSmsNumber", smsNumber);
bundle.putCharSequence("extraSmsText", smsText);
myIntent.putExtras(bundle);
requestCode+= 1;
//Temporary solution. Added to make the requestCode unique, to be able to send more than one SMS in a row with different text and to a different number.
pendingIntent = PendingIntent.getService(SMSAlarm.this, requestCode, myIntent, PendingIntent.FLAG_ONE_SHOT); //PendingIntent.FLAG_ONE_SHOT
//pendingIntent = PendingIntent.getService(SMSAlarm.this, 0, myIntent, 0);
//}
//}
txtClear();
}
catch (Exception e)
{
// TODO Auto-generated catch block
Toast.makeText(getBaseContext(), "Error sending SMS " + e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();
txtClear();
}
}
А вот класс MyAlarmService:
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
try {
super.onStart(intent, startId);
Bundle bundle = intent.getExtras();
smsNumberToSend = (String) bundle.getCharSequence("extraSmsNumber");
smsTextToSend = (String) bundle.getCharSequence("extraSmsText");
Toast.makeText(this, "Sending Message...", Toast.LENGTH_LONG).show();
Toast.makeText(this,
"Number = " + smsNumberToSend + "\n" +
"Message = " + smsTextToSend,
Toast.LENGTH_LONG).show();
sendSMS(smsNumberToSend, smsTextToSend);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void sendSMS(String phoneNumber, String message) {
// TODO Auto-generated method stub
SmsManager smsManager = SmsManager.getDefault();
smsManager.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);
}
}
Любая помощь очень ценится