Android发短信代码

Android发短信代码

经常看到网上的短信DEMO代码, 里面的发短信使用了SmsManager的sendTextMessage()方法, 这个方法的弊端是仅仅是简单地把短信发出去.

如果想实现发出的短信保留在”已发送”或”发送失败”中(由系统负责), 则需要用下面方法. 思路是: 不直接发出短信短, 而是把短信放到系统数据库content://sms/queued中(这一数据库保存的是待发送短信的队列),然后发一条广播通知系统将待发送的短信发出去. 这样就可以在发送后在相关的信箱中找到已发送的这条短信.

这是我这个新手很辛苦从Android源码中找到线索的, 希望看到这篇博文的朋友点个赞.下面是代码片段:

    //发送信息
    //String address表示对方号码, String body表示短信内容
    void sendMsg(address,body)
    {
        //如果是长短信,自动分割. divideMessage()方法是智能的, 不用担心信息过短
        ArrayList<String> msgs = SmsManager.getDefault().divideMessage(body);
        //遍历分割的短信
        for(String msg : msgs)
        {
            //设置时间,号码,内容,协议,状态
            ContentValues value=new ContentValues();
            value.put("date",System.currentTimeMillis());
            value.put("address", address);
            value.put("body", msg);
            value.put("protocol", 0);
            value.put("status",64);
            //type=6表示发送队列(content://sms/queued)
            value.put("type",6);
            //将短信放入queued
            getContentResolver().insert(Uri.parse("content://sms"),value);
        }
        //发送一条广播,通知系统发送queued中的短信
        Intent intent=new Intent("com.android.mms.transaction.SEND_MESSAGE");
        sendBroadcast(intent);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值