android 4行代码解析短信内容(全手动)

android 4行代码解析短信内容(全手动)

主要内容如下
  • 注册接收短信的广播接收者
  • 获得短信内容
  • 解析短信内容

关于第一点注册广播接收者我想大家应该都了解,我就不多说了,如果没接触过广播接收者话还是建议以后再看这篇文章;

第二点 获得短信内容,先贴上官方介绍
这里写图片描述

public void onReceive( Context context, Intent intent)

官方介绍就是,当设备接受到短信时,Intent将会把短信传递给所有注册了接收短信的广播接收者,上面是所有广播接收者的onReceive(),我们便可以通过intent获得短信内容。
那么问题来了,怎么通过Intent获得短信内容呢? 上面也说了 获得由包含PDUS的字节数组可以通过 getMessageFromIntent(Intent), 而这个方法又是 Intents的静态方法。
所以我我们就可以通过 Intents.getMessageFromIntent(intent) 这个来过的Message

这是第一行代码:

SmsMessage[] messagesFromIntent = Telephony.Sms.Intents.getMessagesFromIntent(intent);

第三点:解析短信内容,第一步获取短信内容,第二步获取短信发送号码,这两个都可以通过smsMessage的方法获得。我们在上一步获得了SmsMessage[],
通过getMessageBody() 可以获得短信体也就是短信内容
通过getOriginatingAddress() 可以获得短信来源也就是发送人号码
,因为我们获得的是一个数组,所以我们要便利数组

接下来是 第二第三第四行代码

for (SmsMessage  smsMessage :messagesFromIntent){
            String body = smsMessage.getMessageBody();
            String sender = smsMessage.getOriginatingAddress();

最后贴上四行全部代码

 private Map<String, String> parseSMS(Intent intent) {
        Map<String, String> map = new HashMap();
        SmsMessage[] messagesFromIntent = Telephony.Sms.Intents.getMessagesFromIntent(intent);
        for (SmsMessage  smsMessage :messagesFromIntent){
            String body = smsMessage.getMessageBody();
            String sender = smsMessage.getOriginatingAddress();
            map.put("body", body);
            map.put("sender", sender);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值