Android发送短信以及监听发送状态
2012-06-20 17:35
501 查看
自定义ACTION常数,作为广播的Intent Filter识别常数
private String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";
private String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";
其中,SMS_SEND_ACTIOIN 为发送成功接收到的回复;SMS_DELIVERED_ACTION 是短信接受者接受到短信的回复;
根据运营商的不同,SMS_DELIVERED_ACTION 回复与否也不同。可以亲自试验下。
自定义mServiceReceiver覆盖BroadcastReceiver聆听短信状态信息
public class MyServiceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
try {
/* Android.content.BroadcastReceiver.getResultCode()方法 */
switch (getResultCode()) {
case Activity.RESULT_OK:
/* 发送短信成功 */
Log.d("lmn", sendNums
+ "----发送短信成功---------------------------");
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
/* 发送短信失败 */
case SmsManager.RESULT_ERROR_RADIO_OFF:
case SmsManager.RESULT_ERROR_NULL_PDU:
default:
Log.d("lmn", sendNums
+ "----发送短信失败---------------------------");
break;
}
} catch (Exception e) {
e.getStackTrace();
}
}
}
在oncreate中注册广播事件:
/* 自定义IntentFilter为SENT_SMS_ACTIOIN Receiver */
IntentFilter mFilter01;
mFilter01 = new IntentFilter(SMS_SEND_ACTIOIN);
mReceiver01 = new MyServiceReceiver();
registerReceiver(mReceiver01, mFilter01);
/* 自定义IntentFilter为DELIVERED_SMS_ACTION Receiver */
mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);
mReceiver02 = new MyServiceReceiver();
registerReceiver(mReceiver02, mFilter01);
同时在 onDestroy 中取消:
/* 取消注册自定义Receiver */
if (mReceiver01 != null && mReceiver02 != null) {
unregisterReceiver(mReceiver01);
unregisterReceiver(mReceiver02);
}
发送短信:
SmsManager smsManager = SmsManager.getDefault();
/* 创建自定义Action常数的Intent(给PendingIntent参数之用) */
Intent itSend = new Intent(SMS_SEND_ACTIOIN);
itSend.putExtras(b);
/* sentIntent参数为传送后接受的广播信息PendingIntent */
PendingIntent mSendPI = PendingIntent.getBroadcast( getApplicationContext(), (int) System.currentTimeMillis(), itSend, PendingIntent.FLAG_UPDATE_CURRENT);
Intent itDeliver = new Intent(SMS_DELIVERED_ACTION);
itDeliver.putExtras(b);
/* deliveryIntent参数为送达后接受的广播信息PendingIntent */
PendingIntent mDeliverPI = PendingIntent.getBroadcast( getApplicationContext(), (int) System.currentTimeMillis(), itDeliver, PendingIntent.FLAG_UPDATE_CURRENT);
// 发送短信
smsManager.sendTextMessage(sendNum, null, strMessage, mSendPI, mDeliverPI);
private String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";
private String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";
其中,SMS_SEND_ACTIOIN 为发送成功接收到的回复;SMS_DELIVERED_ACTION 是短信接受者接受到短信的回复;
根据运营商的不同,SMS_DELIVERED_ACTION 回复与否也不同。可以亲自试验下。
自定义mServiceReceiver覆盖BroadcastReceiver聆听短信状态信息
public class MyServiceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
try {
/* Android.content.BroadcastReceiver.getResultCode()方法 */
switch (getResultCode()) {
case Activity.RESULT_OK:
/* 发送短信成功 */
Log.d("lmn", sendNums
+ "----发送短信成功---------------------------");
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
/* 发送短信失败 */
case SmsManager.RESULT_ERROR_RADIO_OFF:
case SmsManager.RESULT_ERROR_NULL_PDU:
default:
Log.d("lmn", sendNums
+ "----发送短信失败---------------------------");
break;
}
} catch (Exception e) {
e.getStackTrace();
}
}
}
在oncreate中注册广播事件:
/* 自定义IntentFilter为SENT_SMS_ACTIOIN Receiver */
IntentFilter mFilter01;
mFilter01 = new IntentFilter(SMS_SEND_ACTIOIN);
mReceiver01 = new MyServiceReceiver();
registerReceiver(mReceiver01, mFilter01);
/* 自定义IntentFilter为DELIVERED_SMS_ACTION Receiver */
mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);
mReceiver02 = new MyServiceReceiver();
registerReceiver(mReceiver02, mFilter01);
同时在 onDestroy 中取消:
/* 取消注册自定义Receiver */
if (mReceiver01 != null && mReceiver02 != null) {
unregisterReceiver(mReceiver01);
unregisterReceiver(mReceiver02);
}
发送短信:
SmsManager smsManager = SmsManager.getDefault();
/* 创建自定义Action常数的Intent(给PendingIntent参数之用) */
Intent itSend = new Intent(SMS_SEND_ACTIOIN);
itSend.putExtras(b);
/* sentIntent参数为传送后接受的广播信息PendingIntent */
PendingIntent mSendPI = PendingIntent.getBroadcast( getApplicationContext(), (int) System.currentTimeMillis(), itSend, PendingIntent.FLAG_UPDATE_CURRENT);
Intent itDeliver = new Intent(SMS_DELIVERED_ACTION);
itDeliver.putExtras(b);
/* deliveryIntent参数为送达后接受的广播信息PendingIntent */
PendingIntent mDeliverPI = PendingIntent.getBroadcast( getApplicationContext(), (int) System.currentTimeMillis(), itDeliver, PendingIntent.FLAG_UPDATE_CURRENT);
// 发送短信
smsManager.sendTextMessage(sendNum, null, strMessage, mSendPI, mDeliverPI);
相关文章推荐
- Android发送短信以及监听发送状态
- android发送短信以及监听发送状态
- Android监听SMS发送状态并获取短信服务中心号码
- Android监听SMS发送状态并获取短信服务中心号码
- Android监听SMS发送状态并获取短信服务中心号码
- Android监听SMS发送状态并获取短信服务中心号码
- Android--调系统发短信界面以及监听短信发送
- Android获取手机号码,后台发送短信以及监听短信发送结果。
- Android监听SMS发送状态并获取短信服务中心号码
- Android--判断发送短信后的状态/发送成功Or发送失败
- Android 使用ContentObserver监听短信的变化,并发送信息给特定的手机号码
- Android外部监听类-发送短信程序
- Android短信发送以及回掉
- android 发送短信的两种方式,以及接收报告和发送报告
- Android--判断发送短信后的状态/发送成功Or发送失败
- android 发送短信的两种方式,以及接收报告和发送报告
- (转)android如何监听发送短信
- Android监听发送短信和接受短信的事件
- android 自定义View在弹出的软键盘之上,以及测量软键盘高度和监听软键盘状态
- Android中短信的收发机制 发送短信 接收短信 拦截短信 监听短信