Próbowałem uzyskać kod wyniku statusu z sendMultipartTextMessage, nie rozumiem, czy odbiornik działa z sendTextMessage, dlaczego nie działa z sendMultipartTextMessage? Szukałem daleko i szukałem przykładów kodu, ale nie widziałem żadnych oczywistych powodów, dla których to przyzwyczajenie. Czy ktoś może rzucić jakieś światło na ten temat?Broadcast Receiver z sendMultiPartTextMessage
ArrayList<String> messages = sms.divideMessage(text);
int messageCount = messages.size();
ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>(messageCount);
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>(messageCount);
for (int j = 0; j < messageCount; j++) {
sentIntents.add(
PendingIntent.getBroadcast(context, 0, new Intent(SENT_ACTION),
0));
}
sms.sendMultipartTextMessage(phoneNumber, null, messages, sentIntents, null);
Oto mój BroadcastReceiver
:
private BroadcastReceiver messageSentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context, "SMS sent", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(context, "Generic failure", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(context, "No service", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(context, "Null PDU", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(context, "Radio off", Toast.LENGTH_SHORT).show();
break;
}
}
};
Kod odbywa się jak poniżej:
sentIntents = new ArrayList<PendingIntent>();
sentIntent = PendingIntent.getBroadcast(context, 0, new Intent(SENT_ACTION), 0);
deliveredIntent = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED_ACTION), 0);
context.registerReceiver(messageSentReceiver, new IntentFilter(SENT_ACTION));
context.registerReceiver(messageDeliveredReceiver, new IntentFilter(DELIVERED_ACTION));
Jeśli ktoś mógłby rzucić jakieś światło na to, będę naprawdę wdzięczny. Po prostu nie rozumiem, dlaczego to zadziałało z sendTextMessage
, ale nie na sendMultipartTextMessage
.
Dzięki.
Czy konieczne jest utworzenie dwóch różnych klas? –