我创建了一个java类来发送短信,但是当我在同一个服务中多次调用该类时,我遇到了问题。
消息发送完美,但正如您在课堂上看到的那样,我在发送消息及其状态(无论是成功还是有错误)时都有PendingIntent
监听。
问题是:
如果我两次拨打同一个班级,BroadcastReceiver
两次收到相同的信息。
例如:如果我拨打两次课程,其中一个货件有错误。这两个BroadcastReceiver
收到相同的错误,或者两者都收到,好像它实际上已成功但有一个错误。
// 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); } }