我提供以下代码,以便发送多部分短信,并检查是否送达,以回复发送方:
ExecuteCommand是接收传入短信并最终回复发送方一条短信的BroadCastReciver
public class ExecuteCommand extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
...
SendSMS s=new SendSMS(context);
s.SendMultipartSMS(MsgBody,Number);
}
和类SendSMS
proivdeBroadcastReceiver
用于发送意图,以确定发送和传递的状态为:
public class SendSMS {
Context smscontext;
private SmsManager smsManager;
private BroadcastReceiver sentReceiver;
int msgParts;
public SendSMS(Context context) {
smscontext = context;
}
public void SendMultipartSMS(String smsResult, String OriginatingAddress) {
smsManager = SmsManager.getDefault();
ArrayList<String> parts = smsManager.divideMessage(smsResult);
msgParts = parts.size();
final String SendNumber=OriginatingAddress;
sentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
boolean anyError = false;
switch (getResultCode()) {
case Activity.RESULT_OK:
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
case SmsManager.RESULT_ERROR_NO_SERVICE:
case SmsManager.RESULT_ERROR_NULL_PDU:
case SmsManager.RESULT_ERROR_RADIO_OFF:
anyError = true;
break;
}
msgParts--;
if (msgParts == 0) {
context.unregisterReceiver(sentReceiver);
Log.d("smsresiver", "send ok");
if (anyError) {
Toast.makeText(context, "sending sms fail",
Toast.LENGTH_SHORT).show();
}
}
}
};
smscontext.registerReceiver(sentReceiver, new IntentFilter(
"CTS_SMS_SEND_ACTION"));
Intent mSendIntent = new Intent("CTS_SMS_SEND_ACTION");
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
for (int i = 0; i < parts.size(); i++) {
sentIntents.add(PendingIntent.getBroadcast(smscontext, 0, mSendIntent,
0));
}
smsManager.sendMultipartTextMessage(
OriginatingAddress, null, parts,
sentIntents, null);
}
} 最后短信正确接收但发送回复短信调用接收器呼叫允许例外
我认为这是由发送收件人动态寄存器接收引起的
我的猜测是正确的,问题是在另一个广播接收者(这里执行命令)中注册新的意图会导致接收者呼叫允许例外我解决这个问题:
public class ExecuteCommand extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction()
.equals("android.provider.Telephony.SMS_RECEIVED")) {
//provide sending SMS in reply to send
}
else if (intent.getAction().equals("CTS_SMS_SEND_ACTION")) {
//check send and delivery of each SMS part
}
我读过很多关于发送短信和多部分短信的帖子,如: 在Android系统中发送短信,在Android系统中发送和接收短信和彩信(pre-Kit Kat Android 4.4),Android系统PendingEvent extras,BroadcastReceiver未接收 ... 但他们似乎没有检查消息的所有部分是否成功发送。 据我所知,对于多部分消息,您可以为每个消息部分添加一个PendingE
本文向大家介绍Twilio 发送短信,包括了Twilio 发送短信的使用技巧和注意事项,需要的朋友参考一下 示例 要使用Twilio和Python发送您的第一条SMS,您只需要Twilio-Python帮助程序库即可开始。
我写了一个使用短信管理器的应用程序。我使用方法,但它不起作用。现在我使用的是,这很有用。但当大约60个字符时,它会发送多部分消息。这正常吗?我读到的每一个地方都应该有160个字符。这对我很重要,因为我必须付出更多。
egg 发送短信逻辑 service 'use strict'; const Service = require('egg').Service; class UserService extends Service { /** * 发送验证码 */ async sendCode() { //1. 获取用户手机号 const { phone } = this
问题内容: 我正在尝试从我的应用程序发送紧急短信。我必须确保SMS发送成功。 在Android系统启动后并进行检查后,将发送SMS。 因此,我有一个处理BOOT_COMPLETED意向过滤器的服务类。此类进行检查,如果内容正确,则尝试通过另一个“扩展服务”类发送SMS消息 确保成功发送短信后,两个服务(处理启动呼叫的服务和发送短信的服务)都必须退出。 问题1 :如何使我的短信发送功能在超时的情况下
本文向大家介绍Android接收和发送短信处理,包括了Android接收和发送短信处理的使用技巧和注意事项,需要的朋友参考一下 关于短信接收处理方面,当前已经有一些app做的比较好了,比如发给手机发验证码验证的问题,很多app在手机接收到验证码后,不需要输入,就直接可以跳过验证界面,这就是用到了对接收到的短信的处理。至于短信的发送,也没什么好说的了。在此也只是附上一个小实例。 效果图: MainA