我有服務在指定的時間發送短信,但我注意到多次收到相同的短信。不知道爲什麼會發生。Android:多次收到短信
設置時間發送短信11:45 pm
後,我得到了同樣的消息在11:45 pm
,05:58 am
,09:58 am
和01:01 pm
這裏4次是我發短信代碼:
Intent myIntent = new Intent(AlarmActivity.this,
SendSmsService.class);
pendingIntent = PendingIntent.getService(AlarmActivity.this, 0,
myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, TimePreference.getHour(sendTime));
cal.set(Calendar.MINUTE, TimePreference.getMinute(sendTime));
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
pendingIntent);
,這裏是SendSmsService.java
public class SendSmsService extends Service
{
private static final String TAG = SendSmsService.class.getSimpleName();
String CompleteAddr, eContact1, eContact2, eContact3;
String smsString;
boolean acknowledged;
@Override
public void onCreate() {
// TODO Auto-generated method stub
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
super.onCreate();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.v(TAG, "onStartCommand");
getSharedSettings();
if (acknowledged == false) {
if (eContact1 != "")
sendSMS(eContact1, smsString + CompleteAddr);
if (eContact2 != "")
sendSMS(eContact2, smsString + CompleteAddr);
if (eContact3 != "")
sendSMS(eContact3, smsString + CompleteAddr);
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
return super.onUnbind(intent);
}
private void sendSMS(String phoneNumber, String message) {
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
}
}
任何建議和意見,將不勝感激
謝謝
感謝快速反應,你確定這將解決我的問題? – juned 2013-04-04 09:54:31
正如我從您的代碼中可以看到的,您不需要始終運行服務。所以,只需啓動它(AlarmManeger)並在完成發送SMS後停止它(onCreate將只運行一次)。 如果你使用onStartCommand(),你可以調用服務將被暫停並由系統調出(當你不需要它時)。 – Utisevalec 2013-04-04 09:59:41
謝謝,我會試試:) – juned 2013-04-04 10:09:51