私はsendMultipartTextMessageからステータス結果コードを取得しようとしていますが、ブロードキャストレシーバがsendTextMessageで動作する場合、なぜsendMultipartTextMessageで動作しないのですか?私は遠くに徹底的に調査し、コード例を見てきましたが、なぜこれがうまくいかないのかという明確な理由は見当たりません。誰もこれにどのような光を当てることができますか?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);
ここに私の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;
}
}
};
コードは以下のように行われます。
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));
誰もがこの上の任意の光を当てることができれば、私はそれを本当に感謝します。私はこれがなぜsendTextMessage
と働くことができるのか分かりませんが、sendMultipartTextMessage
ではできません。
ありがとうございました。
2つの異なるクラスを作成する必要がありますか? –