android 4.2.1短信常用接口整理

转自点击打开链接

        android上短信功能基本很稳定了,一般很少维护,所以感觉总是很陌生。%>_<%  这里总结下4.2.1上原生Mms用到的短信接口,以便在此基础上记忆。android的framework对上层短信提供的接口基本都在SmsManager和SmsMessage。个人总结前者主要提供了发送短信及其周边功能,后者提供了计算长度解析短信编码等针对短信内容的功能。
        先说说SmsManager这个类:
        sendTextMessage()根据后面的调用,可以知道这个是协议上发送一条短信的方法。协议上的一条短信是指一条短信不能超过140个字节,即70个汉字。这个方法在原生短信中没有调用,尽在该类的另外一个方法中有用到。
        divideMessage()将一个字符串根据协议分成若干个短信段。这个方法会在SmsSingleRecipientSender.java,原生短信模块中最终发送短信的类中用到。稍微注意下这个方法就能发现一条长短信中,从第二个分断短信开始,由于增加了一些字段可供存储内容空间变小了。
        sendMultipartTextMessage()android原生代码中,应用层调用的发短信方法。从这里开始就和应用没有关系了。
        sendDataMessage()从字面意思可以理解到其意思,但是没有见在哪里用过,先知道有这个方法存在。
        copyMessageToIcc()也没有看到在哪里用到,同样先知道。
        deleteMessageFromIcc()这个在短信数据库里面有用到,删除sim卡上短信。
        updateMessageOnSim()也很少用到。
        getAllMessagesFromIcc()还是在短信数据库中用到。
        后面的方法基本都和短信功能关系不大,就不一一说明。我们可以看出,在这里我们只要记住并且熟悉sendMultipartTextMessage()和divideMessage()两个接口就差不多了,如果真有必要写发送短信功能代码,这两个接口就足够了。
        再说说SmsMessage。这个类里的方法可以说是根据协议一个个实现的。注释里面也说明了其参考了TS 23.038协议。
        createFromPdu()根据注释可以知道是在收到短信的情况下,将下面发上来广播中的内容解析成短信。原生短信中用的是该方法的重载方法。
        createFromPdu()这个方法的重载方法,参数列表中多了一个短信类型。因为GSM和CDMA短信解码方式不一样。下层在往上层发送广播的时候会提供当前短信类型,根据这个类型就可以知道是用GSM还是CDMA去解析短信。
        newFromCMT(),newFromParcel(),createFromEfRecord(),getTPLayerLengthForPDU()这几个方法一般不常用,大概有个印象就行。
        calculateLength()计算当前短信按照协议打包之后的信息,包括短信需要打包成几段,最后一段还剩多少空间等内容。在ComposeMessageActivity.java这个编辑短信界面显示剩余字数的updateCounter方法里面就有用到。
        fragmentText()这个在SmsManager中和divideMessage用到,就不多说了。这之后的方法都是get方法,返回短信类型中的一些标记。

        最后补充一句,有些方法和作用域前面有@hide字段,表示不对外公开api,但是系统内部是可以使用的。不过使用反射貌似也能用。:)短信中常用到的接口就整理到这里,方便自己以后记忆。希望自己能带着这些去看看3GPP协议。:)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值