我正在开发一个基于websocket的应用程序,允许我用我的电脑发送短信与我的Android手机。 服务器和客户端之间的通信基于包含必须从两个部分解释的命令的简单字符串的交换。 当我发送单个部分的短信时,客户端可以很好地管理它们,但是当我发送多部分短信时,它经常冻结,关闭与服务器的连接。发送多部分短信给许多收件人w/Android
我需要能够发送大量的短信(每天约3000条)。 下面是例程的代码片段,它允许我发送它们。
SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(messaggio);
ArrayList<PendingIntent> sentPI = new ArrayList<PendingIntent>();
final int parts_size = parts.size();
registerReceiver(new BroadcastReceiver(){
int msgparts = parts_size;
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
msgparts--;
sent_check_debug = 1;
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
msgparts--;
sent_check_debug = 2;
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
msgparts--;
sent_check_debug = 3;
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
msgparts--;
sent_check_debug = 4;
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
msgparts--;
sent_check_debug = 5;
break;
}
if(msgparts == 0)
{
sent_check = 1;
if(this != null)
unregisterReceiver(this);
}
}
}, new IntentFilter(SENT));
for(int i = 0; i < parts.size(); i++)
sentPI.add(PendingIntent.getBroadcast(Client.this, 0, new Intent(SENT), 0));
sms.sendMultipartTextMessage(numero, null, parts, sentPI, null);
while(sent_check != 1);
哪里错误? 为什么在发送消息的随机数之后它会冻结?
在此先感谢!
感谢您的回答。我使用var sent_check来确保多部分SMS的每个部分都被发送,并且广播接收器已经捕获了所有部分。所以这是一种等待代码的方式。 您对改变意图有什么意义,但是每条短信留下IntentFilter是唯一的? –
看到我上面的编辑 – marmor
谢谢!我会尽力让你知道:-) –