Я работаю над приложением, которое отправляет SMS-сообщения. У меня проблема в том, что метод sendTextMessage отправляет два сообщения с одинаковым содержимым. Как мне это исправить?
Этот класс запускает процесс
public class C2DMMessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Some stuff
Log.i("C2DMMessageReceiver", "Got C2DM message");
SmsSend message = new SmsSend(context, phonenumber, line);
message.send()
}
}
Класс для отправки текстовых сообщений
public class SmsSend {
SmsSend(Context tcontext, String phoneNumber, String smstext){
context = tcontext;
phone_number = phoneNumber;
message = smstext;
}
protected void send(){
if(foo){
Log.i("SmsSend", "Sending message");
SmsManager sms = SmsManager.getDefault();
String sent = "android.telephony.SmsManager.STATUS_ON_ICC_SENT";
PendingIntent piSent = PendingIntent.getBroadcast(context, 0, new Intent(sent), 0);
sms.sendTextMessage(phone_number, null, message, piSent, null);
}
}
}
класс, чтобы узнать, что радует
public class SmsSentBroadcastReciever extends BroadcastReceiver{
private static final String TAG = "SmsSentBroadcastReciever";
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()){
case Activity.RESULT_OK:
Log.i(TAG,"SMS sent");
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Log.e(TAG,"Generic failure");
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Log.e(TAG,"No service");
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Log.e(TAG,"PDU NULL");
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Log.e(TAG,"Radio off");
break;
}
}
}
Выход из LogCat
Получил сообщение C2DM
Отправка сообщения
СМС отправлено
СМС отправлено
Таким образом, sendTextMessage запускается только один раз, но все равно выдает два сообщения. Что делать?
Устройство, которое я отлаживаю, - это Samsung Galaxy S2 с Android 4.0. Я прочитал некоторые старые темы, что sendTextMessage не работает на некоторых (HTC) устройствах, поэтому я попытался с sendMultipartTextMessage, но это дает тот же результат.