精通Android4学习笔记-电话API-SMS

1.发送SMS消息

发送SMS消息分为两个步骤:

a  发送  发送到消息中心

b 送达  接收者从消息中心接收到消息

 

SmsManager中有三个方法是用来发送SMS的。

sendTextMessage(String destAddress,String smscAddress,String txtMsg,PendingIntent sentIntent, PendingIntent deliveryIntent);

sendDataMessage多了一个参数,以指定一个接收者的特定端口号,而且消息的类型是byte[],而不是String;

sendMultipartTextMessage 方法接受的是数组,他在实际应用被更加广泛的使用,以支持超过一个sms段落的sms(一个sms段落长度:70个中文,140个英文字符)

 

另外需要说明的是:

参数中两个PI,分别用来广播发送成功和送达成功的事件;

一般来说,我们可以看看下面的代码示例:

  ArrayList<String> messages = sManager.divideMessage(message);

  int messageCount = messages.size();
  Log.d(TAG, "sendSMS" + " to " + phoneNumber + " divideMessage:"
    + messageCount);

  ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>(
    messageCount);
  ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>(
    messageCount);

  sentIntents.add(PendingIntent.getBroadcast(mContext,
    (int) System.currentTimeMillis(), new Intent(SMS_SEND_ACTIOIN),
    PendingIntent.FLAG_UPDATE_CURRENT));


  sManager.sendMultipartTextMessage(phoneNumber, null, messages,
    sentIntents, deliveryIntents);

上面的例子,用到了sentIntents,deliveryIntents实际上是空的。

 

2.接收SMS

哇,很方便。

从Pdu转换到String的方法,SmsMessage类里面都有提供;

不过需要注意的是,因为BroadcastReceiver必须在10秒中内处理完,所以不要在这里面做UI的操作,也不要做其他耗时的操作比如打开大文件或者网络存取。

如果真的要做耗时操作,那就start service去做(不要使用bindservice)。

3.使用SMS文件夹

public class SMSDraftDemo extends ListActivity {

    private ListAdapter adapter;
    private static final Uri SMS_INBOX = Uri.parse("content://sms/draft");

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        Cursor c = getContentResolver()
                .query(SMS_INBOX, null, null, null, null);
        startManagingCursor(c);
        String[] columns = new String[] { "body" };
        int[] names = new int[] { R.id.row };
        adapter = new SimpleCursorAdapter(this, R.layout.sms_inbox, c, columns,
                names);

        setListAdapter(adapter);
    }
}

 

以下是完整的SMS文件夹列表和每个文件夹的URI:

所有文件夹content://sms/all

收件箱 content://sms/inbox

已发送 content://sms/sent

草稿 content://sms/draft

发件箱 content://sms/outbox

发送失败 content://sms/failed

排队消息 content://sms/queued

未送达  content://sms/undelivered

对话 content://sms/conversations

 

android将MMS与SMS结合在一起,支持使用mms-sms的AUTHORITY同时访问两者的ContentProvider。因此,可以按如下形式访问URI:

  content://mms-sms/conversations

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值