我正在尝试在触发广播接收器时向联系人发送短信,但发送短信的方法似乎无法在广播接收器中工作(其在活动中正常工作) - 它仅发送短信到第一次接触,然后停止。有人可以检查我的代码并告诉我这个问题是什么吗?
注意:我没有在LogCat中收到任何错误或警告。我在调用的接收方法中调用此方法(已检查有效)并且仅向第一个联系人发送短信,但不向其他联系人发送短信。
这是我的代码:
private void sendSMS(String message) {
ArrayList<Contact> contacts = getContacts();
Log.d(TAG, "sengind SMS message, contacts size: " + contacts.size());
for (Contact contact : contacts) {
try {
sendSMSmsg(contact.getNumber(), message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public synchronized void sendSMSmsg(String phoneNumber, String message) {
v.vibrate(50);
ArrayList<PendingIntent> sentPendingIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliveredPendingIntents = new ArrayList<PendingIntent>();
PendingIntent sentPI = PendingIntent.getBroadcast(context, 0,
new Intent(context, SmsSentReceiver.class), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0,
new Intent(context, SmsDeliveredReceiver.class), 0);
try {
SmsManager sms = SmsManager.getDefault();
ArrayList<String> mSMSMessage = sms.divideMessage(message);
for (int i = 0; i < mSMSMessage.size(); i++) {
sentPendingIntents.add(i, sentPI);
deliveredPendingIntents.add(i, deliveredPI);
}
sms.sendMultipartTextMessage(phoneNumber, null, mSMSMessage,
sentPendingIntents, deliveredPendingIntents);
} catch (Exception e) {
Log.e(TAG, "sending sms ERROR");
e.printStackTrace();
}
}
答案 0 :(得分:0)
它是BroadcastListener的常见行为。您不应该将它用于此类任务。您最好创建一个Service或IntentService,并从BroadcastListener中启动SMS发送作业。这样它应该可以工作。