我有在指定时间发送短信的服务,但我注意到多次收到同样的消息。不知道为什么会这样。
设置发送短信11:45 pm
的时间后,我在11:45 pm
,05:58 am
,09:58 am
和01:01 pm
以下是我发送短信的代码:
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);
}
}
任何建议和想法都将受到赞赏 感谢
答案 0 :(得分:0)
在服务中使用主代码的“onCreate”操作,而不是“onStartCommand()”。
答案 1 :(得分:0)
这可能是您手机中的问题,无法正确回复已发送的短信。
我在Android 4.0.4(ICS)上运行的Sony Xperia Pro(MK16i)遇到了同样的问题。
每当我安装一个可以在摇晃时关闭屏幕的应用程序,扭曲或转动问题就会发生:多个短信副本。 当我禁用它或更好,甚至卸载它,一切都变得正常。 显然,该应用程序阻止SMS-Receive-Reports被发送回SMS提供商(电话公司)的服务器。 然后这些认为没有收到短信(电话关闭或类似的东西),尝试再次尝试10分钟左右(取决于提供商)。 这会导致多个收据。直到手机有机会发回短信接收报告。然后整个马戏团停了下来。直到下一个短信。
尝试查看某些内容是否使用了设备控制插槽(请参阅settings-security)。尝试禁用它或卸载它。 或者获得更新的手机或Android版本。 否则,我也不知道。
干杯, 伊姆雷