gpt4 book ai didi

android - sendSMS() 方法无法读取字符串

转载 作者:行者123 更新时间:2023-11-30 02:37:48 25 4
gpt4 key购买 nike

我知道有一些明显的错误,但我尝试了很多东西,但无法使用这种方法来读取全局字符串:

public void sendSMS(String phoneNumber) {
SmsManager smsManager = SmsManager.getDefault();

String message = mMessage;
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";

SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(message);
int messageCount = parts.size();

Log.i("Message Count", "Message Count: " + messageCount);
Log.i("Order", message);
Toast.makeText(getBaseContext(), message,
Toast.LENGTH_SHORT).show();

ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();

PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);

for (int j = 0; j < messageCount; j++) {
sentIntents.add(sentPI);
deliveryIntents.add(deliveredPI);
}

// ---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));
smsManager.sendTextMessage(phoneNumber, null, message, sentPI,
deliveredPI);
/*
* sms.sendMultipartTextMessage(phoneNumber, null, parts, sentIntents,
* deliveryIntents);
*/
}

此方法位于包含 ViewPager fragment 的 MainActivity 中。使用以下方法在 fragment 中收集和连接字符串:

public void getListToString(){
StringBuilder sb = new StringBuilder();
for(ReviewItem item : mCurrentReviewItems){
sb.append(item.getTitle() + ": " + item.getDisplayValue() + "\n");
}

String msg = sb.toString();
((MainActivity)getActivity()).setMessage(msg);
}

可以肯定的是 - 我用 mMessage 和 Toasts 组成了日志。显示了每个项目,但 sendSMS() 不想发送它。虽然,当我在 String message 而不是 mMessage 中放置“some string here”时,它工作得很好。任何人都可以理解是什么让 public String mMessage 无法访问 sendTextMessage 吗?

最佳答案

您的问题似乎是您的字符串超出了单个 SMS 消息的最大字符长度,需要拆分并使用 sendMultipartTextMessage() 发送。

这个最大长度将取决于所用字母表的字符位大小:对于标准 GSM 7 位字母表,它是 160 个字符;对于 8 位字母表,它是 140 个字符;对于 16 位字母表(包括任何非拉丁 Unicode 字符),它只有 70 个。

如果您尝试发送的消息超过长度限制,sendTextMessage() 将无提示地失败,不会抛出任何错误或异常,也不会向提供者写入尝试的指示(如果适用)。

关于android - sendSMS() 方法无法读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26226520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com