基本上我有一个聊天应用程序,我使用 SmsManager 在客户端之间发送短信,但我能够发送比它更长的消息。我读到它只能发送大约 40-60 封信,但我想发送 200-400 封邮件之类的消息 那么有没有办法做到这一点?
问问题
2946 次
1 回答
7
我为您创建了一个演示.. 我认为它可能对您有所帮助..
它会将您的消息分成几部分并一一发送...
public class Home extends Activity
{
Context ctx;
private static final String SMS_SEND_ACTION = "CTS_SMS_SEND_ACTION";
private static final String SMS_DELIVERY_ACTION = "CTS_SMS_DELIVERY_ACTION";
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
String ph_no;
String str;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
ctx = this;
ph_no = "set destination mob. no here..";
str = "Your message here....";
SmsManager sm = SmsManager.getDefault();
IntentFilter sendIntentFilter = new IntentFilter(SMS_SEND_ACTION);
IntentFilter receiveIntentFilter = new IntentFilter(SMS_DELIVERY_ACTION);
PendingIntent sentPI = PendingIntent.getBroadcast(ctx, 0,new Intent(SMS_SEND_ACTION), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(ctx, 0,new Intent(SMS_DELIVERY_ACTION), 0);
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;
}
}
};
registerReceiver(messageSentReceiver, sendIntentFilter);
BroadcastReceiver messageReceiveReceiver = 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;
}
}
};
registerReceiver(messageReceiveReceiver, receiveIntentFilter);
ArrayList<String> parts =sm.divideMessage(str);
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
for (int i = 0; i < parts.size(); i++)
{
sentIntents.add(PendingIntent.getBroadcast(ctx, 0, new Intent(SMS_SEND_ACTION), 0));
deliveryIntents.add(PendingIntent.getBroadcast(ctx, 0, new Intent(SMS_DELIVERY_ACTION), 0));
}
sm.sendMultipartTextMessage(ph_no,null, parts, sentIntents, deliveryIntents);
}
}
此代码还将为您提供发送和交付通知。(此发送和交付通知是附加代码,但在某处它已为您使用完整)
于 2013-04-04T11:14:13.250 回答