android 接收短信流程

短信来了之后framework会发送广播 “android.provider.Telephony.SMS_RECEIVED”

---------------------------------------PrivilegedSmsReceiver---------------------

此时,PrivilegedSmsReceiver会接受到该广播,调用父类SmsReceiver的onReceiveWithPrivilege()方法

此方法内获取一个wake lock 然后启动SmsReceiverService服务

---------------------------------------SmsReceiverService------------------------

启动该服务后,会调用onStartCommand方法,该方法以之前传来的Intent为Message的Obj发送一条Message

在handleMessage方法里面通过Intent判断后执行相应的操作,如handleSmsSent,handleSmsReceived,

handleBootCompleted,handleServiceStateChanged

接受到短信时当然执行handleSmsReceived方法

该方法内通过Intents.getMessagesFromIntent(intent)方法从Intent里面取出Message[]

然后通过insertMessage(this, msgs)方法插入短信insertMessage里通过调用storeMessage方法

storeMessage方法执行values.put(Inbox.BODY, sms.getDisplayMessageBody())方法就可以将

短信以ContentValues的形式插入数据库。

insertMessage方法如果插入成功将会返回插入短信的Uri,如果此Uri不为Null,说明已经插入数据库,于是

执行MessagingNotification.updateNewMessageIndicator(this, true);

该方法则会根据短信的状态,发出提示音或震动,也可以根据设置notification

自此,一条新信息就成功接受了。

 

短信的所有提示都是通过Notification来提示的,所以当从设置里面把Notification的震动关闭,设为静音的话,

无所短信设置里面怎么设置提示方式都没用。因为短信提示就是一个普通的Notification

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值