Android短信功能源码方法

Android系统提供了Intent方法,来实现短信接口的调用。使用startActivity()启动了了短信功能后,短信界面就会呈现在用户面前。开发其他应用程序用此方法,就显得不太合理。在这里总结使用源码来完成短信发送任务,很多代码都来自网上,在这里,我仅做了点封装。

由于在MSM短信是在后台发送的,取名为sendTextMsgBack()。

void sendTextMsgBack(Context _context, //函数调用者
String _strDestAddress, //收件人号码
String _strMessage){ //短信内容 Intent sentIntent=new Intent(SENT_SMS_ACTION);
PendingIntent sentPI=PendingIntent.getBroadcast(_context, 0, sentIntent, 0);

//仅在当目标用户接收到你的SMS消息后触发
Intent deliverIntent=new Intent(DELIVERED_SMS_ACTION);
PendingIntent deliverPI=PendingIntent.getBroadcast(_context, 0, deliverIntent, 0); SmsManager sms = SmsManager.getDefault(); if (_strMessage.length() > 70) {
ArrayList<String> msgs = sms.divideMessage(_strMessage);
for (String msg : msgs) {
sms.sendTextMessage(_strDestAddress, null, msg, sentPI, deliverPI); } else {
sms.sendTextMessage(_strDestAddress, null, _strMessage, sentPI, deliverPI);
}

为了监视短信的发送状态,另外还需要两个广播接收器。

final String SENT_SMS_ACTION = "SENT_SMS_ACTION";
final String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";


private class SMS_BroadcastReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
//System.out.println("SMS_BroadcastReceiver");
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent success actions",
Toast.LENGTH_SHORT).show();
System.out.println("SMS sent success actions");
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "SMS generic failure actions",
Toast.LENGTH_SHORT).show();
System.out.println("SMS generic failure actions");
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(),
"SMS radio off failure actions", Toast.LENGTH_SHORT).show();
System.out.println("SMS radio off failure actions");
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(),
"SMS null PDU failure actions", Toast.LENGTH_SHORT).show();
System.out.println("SMS null PDU failure actions");
break;
}

}
private class Dele_BroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context _context,Intent _intent){
Toast.makeText(getBaseContext(),
"SMS delivered actions",
Toast.LENGTH_SHORT).show();
System.out.println("SMS delivered actions"); }

在Activity对象里,对这两个广播接收器进行注册。

另外,在提供个对Intent方法发送短信的函数封装:

void sendTextMsgFont(Context _context, //函数调用者
String _strDestAddress, //收件人号码
String _strMessage){ //短信内容


Uri uri = Uri.parse( "smsto:" + _strDestAddress);
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", _strMessage);
_context.startActivity(it);
}

-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值