我创建了一个java类来发送短信,但是当我在同一个服务中多次调用该类时,我遇到了问题 .
消息发送完美,但正如你在课堂上看到的那样,我在发送消息及其状态(无论是成功还是有错误)时都有一个 PendingIntent
监听 .
问题是:
如果我两次拨打同一个 class ,那么两次 BroadcastReceiver
会收到相同的信息 .
For example: 如果我打电话两次,其中一个货物有错误 . 这两个 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);
}
}