我目前正在使用app发送消息和日志消息发送状态。我正在使用以下代码执行此操作我正在调用sendSMS函数,每个电话号码的延迟为2秒。我已经测试了很多手机和操作系统版本,它在nexus,lg和samsung中工作得很好但是它在三星S3中引起了操作系统版本4.4.2的问题。当我向超过一个电话号码发送超过160多个字符的消息时,它仅成功发送到第一个电话号码并将其他电话号码发送到通用故障。需要注意的是,只有当我发送的字符大于160的消息时才会出现这种情况。 任何帮助将不胜感激
public void sendSMS(final String message, String phoneNo) {
try {
String SENT = "com.ebryx.smscustommessagegeneration"+""+System.currentTimeMillis()+""+((int)this.getmMessageId());
Intent intentMessageASendStatus = new Intent(SENT);
final PendingIntent pi = PendingIntent.getBroadcast(App.getContext(), ((int)this.getmMessageId()),
intentMessageASendStatus, PendingIntent.FLAG_CANCEL_CURRENT);
ArrayList<PendingIntent> sentPI = new ArrayList<PendingIntent>(){{add(pi);}};
App.getContext().registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
DatabaseManager dm = new DatabaseManager();
SendMessageStatus messageStatus = new SendMessageStatus();
switch (getResultCode())
{
case Activity.RESULT_OK:
Log.i("tag","sent successfully ");
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Log.i("tag","Generic Failure");
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Log.i("tag","No service failure");
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Log.i("tag","Airplane mode failure");
break;
}
}
}, new IntentFilter(SENT));
SmsManager smsManager = SmsManager.getDefault();
ArrayList<String> parts = smsManager.divideMessage(message);
smsManager.sendMultipartTextMessage(phoneNo, null, parts,sentPI, null);
} catch (Exception e) {
e.printStackTrace();
Log.i("Message Sent", "NOT Send");
Utils.writeOnLogFile("Message Not Sent: " + message);
}
}