Android 2.3发短信详细流程

来源:未知 责任编辑:责任编辑 发表时间:2015-03-01 01:34 点击:

在android中,APP通过SmsManager.java一系列方法实现发送短信的功能,而发送的内容有很很多种,比如sendTextMessage、sendMultipartTextMessage、sendDataMessage等等,在这篇文章里我们就以其中一个为例阐述发送短信的完整流程,如果有不对的地方,请大家指正,一起学习。

1. 起点:SmsManager.java (frameworks/base/telephony/java/android/telephony/SmsManager.java)

sendTextMessage的核心代码如下:


view plaincopy to clipboardprint?public void sendTextMessage( 
          ...... 
       try { 
           ISms iccISms = ISms.Stub.asInterface(ServiceManager.getService("isms")); 
           if (iccISms != null) { 
               iccISms.sendText(destinationAddress, scAddress, text, sentIntent, deliveryIntent); 
           } 
       } catch (RemoteException ex) { 
           // ignore it  
       } 
   } 
 public void sendTextMessage(
           ......
        try {
            ISms iccISms = ISms.Stub.asInterface(ServiceManager.getService("isms"));
            if (iccISms != null) {
                iccISms.sendText(destinationAddress, scAddress, text, sentIntent, deliveryIntent);
            }
        } catch (RemoteException ex) {
            // ignore it
        }
    }其中,view plaincopy to clipboardprint?ISms iccISms = ISms.Stub.asInterface(ServiceManager.getService("isms")); 
ISms iccISms = ISms.Stub.asInterface(ServiceManager.getService("isms"));是通过AIDL的方式,获得服务,再调用这个服务对象的sendText()方法,那这个服务对象在哪里呢?
2. 我们知道,在eclipse中创建一个xx.aidl文件后,IDE会利用相关工具自动生成一个名为xx.java的接口,它有一个名为Stub的内部类,那我们自己创建一个类并继承这个内部类,则可以实现了进程间的通信,这个是aidl的知识,这儿不详述。我们往下看:

根据aidl的实现流程,那该服务对象应该是继承了ISms.Stub,经过查找我们发现这个服务类:IccSmsInterfaceManagerProxy.java,所以从SmsManager.sendTextMessage()方法调用了IccSmsInterfaceManagerProxy对象的sendText()方法。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • android 屏幕保护
  • Android 完全退出程序
  • 原创:Android应用开发-Andorid歌词秀,含源码
  • 众多Android 开源项目推荐,给力工作给力学习
  • Android成长的幕后推手:工程师鲁宾
  • MIUI:10个亮点及5处不足
  • Android歌词秀1.5版
  • 自己开发计算器(4)-完成!源代码公开!
  • Android开发者指南(29) —— USB Host and Accessory
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索 - 移动版 - 返回顶部
Copyright © 2008-2013 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1