Send SMS on Android

I made a java class to send sms but I have a problem when I call the class more than once in the same service.

The messages are sent perfect, but as you can see in my class I have a PendingIntent listening when sending the messages and their status (whether successfully or there was error).
The problem is:
if I call twice to the same class, those two times the BroadcastReceiver receives the same message.

For example: if I call twice a class, and one of the shipments has an error. The two BroadcastReceiver receive the same error, or both receive as if it was actually successfully but one had an error.

I searched all morning but have not found the solution. I hope someone knows where I'm wrong :)

// imports....

public class SendSms {

    public SmsNoticeListener mListener;
    private UserGroupRead user;

     public interface SmsNoticeListener {
            public void onSentReceiver(UserGroupRead user, int resultcode);
            public void onDeliveredReceiver(UserGroupRead user, int resultcode);
        }

    private Context context;
    private String phoneNumber;
    private String message;

    private BroadcastReceiver sendBroadcastReceiver;
    private BroadcastReceiver deliveryBroadcastReceiver;

    public SendSms(Context context, SmsNoticeListener mListener, UserGroupRead user, String phoneNumber, String message) {
        this.context = context;
        this.mListener = mListener;
        this.user = user;
        this.phoneNumber = phoneNumber;
        this.message = message;
    }

    public void send() {
        String SENT = "SMS_SENT";
        String DELIVERED = "SMS_DELIVERED";

        PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new Intent(SENT), 0);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED), 0);

        sendBroadcastReceiver = new BroadcastReceiver(){
            public void onReceive(Context arg0, Intent arg1) {
                mListener.onSentReceiver(user, getResultCode());
            }
        };
        context.registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT));

        deliveryBroadcastReceiver = new BroadcastReceiver(){
            public void onReceive(Context arg0, Intent arg1) {
                mListener.onDeliveredReceiver(user, getResultCode());
            }
        };
        context.registerReceiver(deliveryBroadcastReceiver, new IntentFilter(DELIVERED));

        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
    }

    public void close() {
        context.unregisterReceiver(sendBroadcastReceiver);
        context.unregisterReceiver(deliveryBroadcastReceiver);
    }

}

链接地址: http://www.djcxy.com/p/63376.html

上一篇: Activity和BroadcastReceiver中的Timer.schedule不同

下一篇: 在Android上发送短信