发送短信

/**
 * 本文并非完全原创,而是基于
 * http://blog.youkuaiyun.com/hotlinhao/article/details/13016425
 * 来制作的修改版。感谢hotlinhao的分享。
 */

// 在AndroidManifest.xml中申请权限:
<uses-permission android:name="android.permission.SEND_SMS"/>


private String LOG_TAG = "Wesnoth";
private String SENT_SMS_ACTION = "SENT_SMS_ACTION";
private String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";

/**
 * 发送短信
 * @context 上下文对象
 * @receiverNumber 收信人号码
 * @text 短信内容
 */
public void sendSms(Context context, String receiverNumber, String text)
{
    // 1.获取短信管理者
    SmsManager smsManager = SmsManager.getDefault();

    // 2.监听短信的发送状态。可省略这一段代码,直接sentPI = null
    Intent sentIntent = new Intent(SENT_SMS_ACTION);
    PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, 0);
    context.registerReceiver(new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {
            int resultCode = getResultCode();
            String resultInfo = null;
            switch(resultCode)
            {
                case -1 /* RESULT_OK */:
                    resultInfo = "Sms sent success.";
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    resultInfo = "Generic failure cause.";
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    resultInfo = "Failed because radio was explicitly turned off.";
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    resultInfo = "Failed because no pdu provided.";
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    resultInfo = "Failed because service is currently unavailable.";
                    break;
                case 5 /* @hide SmsManager.RESULT_ERROR_LIMIT_EXCEEDED */:
                    resultInfo = "Failed because we reached the sending queue limit.";
                    break;
                case 6 /* @hide SmsManager.RESULT_ERROR_FDN_CHECK_FAILURE */:
                    resultInfo = "Failed because FDN is enabled.";
                    break;
                default:
                    resultInfo = "Error: Unexpected result code.";
                    break;
            }
            Log.d(LOG_TAG, resultInfo);
        }
    }, new IntentFilter(SENT_SMS_ACTION));

    // 3.监听短信是否已送达。可省略这一段代码,直接deliverPI = null
    Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);
    PendingIntent deliverPI = PendingIntent.getBroadcast(context, 0, deliverIntent, 0);
    context.registerReceiver(new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {
            Log.d(LOG_TAG, "Destination address got Sms.");
        }
    }, new IntentFilter(DELIVERED_SMS_ACTION));

    // 4.发送短信
    smsManager.sendTextMessage(phoneNumber, null, text, sentPI, deliverPI);
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值