sendTextMessageは160文字以下のSMSしか送信できないため、最近SMSの送信で少し問題が発生しました。ただし、別のユーザーに情報の入力を促すための長いテキストを送信したいと思います。
これが私のコードです:
//sends a SMS message to another device
private void sendSMS(String phoneNo, String text)
{
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);
//when the SMS has been sent
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SENT));
//when the SMS has been delivered
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS delivered",
Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not delivered",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED));
displaySent(text, phoneNo);
SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(text);
sms.sendMultipartTextMessage(phoneNo, null, parts, sentPI, deliveredPI);***********
//SmsManager sms = SmsManager.getDefault();
//sms.sendTextMessage(phoneNo, null, text, sentPI, deliveredPI);
}
Asterixsでマークされた行に、「SmsManager型のメソッドsendMultipartTextMessage(String、String、ArrayList、ArrayList、ArrayList)は引数(String、null、ArrayList、PendingIntent、PendingIntent)に適用できません」というエラーが表示されます。これがお役に立てば幸いです。
これに関する助けをいただければ幸いです。
ちなみに、テキストメッセージを送信するすべての方法が、すべてのメッセージをそれ自体ですでに分割できる方法ではないのはなぜだろうか。sendMultipartMessageがsendTextMessageの仕事をすることができると私が仮定するとき、なぜsendTextMessageとsendMultipartTextMessageが必要なのですか。これがなぜそうなるのかについての提案も大歓迎です。