Android之通话和短信

通话和短信

通信和短信功能依托于底层硬件和驱动的支持,不同设备有不同标准的基带BaseBand硬件。在底层之上,Android抽象了通信接口层RIL,由通信守护服务和设备厂商的通信类库组成。设备启动时,守护服务会加载通信类库,并监听特定的端口启动通话相关的Socket服务。

 

    通信接口联通了上层类库和底层设备。用户需要拨号等通信请求时,上层类库会将请求转换成特定指令,通过Socket连接并发送至守护服务,通信守护服务调用通信类库,通过底层硬件将请求发送出去。

 

Android的框架层,通话和短信功能定义在telephony包,负责建立于RIL服务的连接,并将用户的请求转换成指令和数据进行传输。不同的通话协议中的一些特殊的功能都由各自的Java包提供,如gsm提供获取GSM协议相关的参数。

在应用层,处理通话请求的通话应用Phone ApplicationAndroid中最为特殊的应用。和框架耦合密切,负责所有通话请求相关的处理。系统提供的通话应用不能被第三方取代,一次保证通话的可靠。

 

通话的处理

telephonyManager查看通话状态、SIM卡信息

telephonyManager.getPhoneType通话网络类型

telephonyManager.getCallState通话状态

使用telephonyManager.listen函数,注册telephonyManager.phoneStateListener适时监听通话状态的变更,适时查询来电显示。

 

出于安全考虑,没有将拨号呼叫、接听电话的接口暴露,应用中需要打电话,需要Intent实现。

StartActivitynew IntentIntent.ACTION_DIAL, new URI.parse(“tel:XX”)))

StartActivitynew IntentIntent.ACTION_CALL, new URI.parse(“tel:XX”)))

 

短信的发送和接受

SmsManager可以控制发送短信或彩信。

//构造回掉事件,短信发送结束后,会发出对应的Intent请求

Intent intent = new Intent(“com.sample.sms_sent”);

Intent.putExtra(“sms_id”, GenerateSmsId());

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

//发送文本短信

SmsManager smsManager = SmsManager .getDefault();

smsManager.sendTextMessage(phone_number, null, text_content,  pendingIntent,null);

 

PendingIntent是异步Intent对象,当短信发送完成后,会触发预设的广播事件,通过监听该广播事件,可获知短信发送结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值