使用装有MIUI系统的小米手机,静态注册的广播接收器监听短消息。

  1. AndroidManifest.xml中声明权限
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
  1. AndroidManifest.xml中声明广播接收器
        <receiver
android:name=".SmsReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
  1. 广播接收器代码:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 从intent中获取消息
SmsMessage[] smsMessages = getMessagesFromIntent(intent);
// 获取短信发送者号码
String senderNumber = smsMessages[0].getOriginatingAddress();
// 组装短信内容
StringBuilder content = new StringBuilder();
for (SmsMessage smsMessage : smsMessages) {
content.append(smsMessage.getMessageBody());
}
// 获取卡槽位置
Bundle bundle = intent.getExtras();
int slot = bundle.getInt("android.telephony.extra.SLOT_INDEX", -1);
}
}

要点:

  • 先通过 getMessagesFromIntent(Intent) 获取 SmsMessage 数组
  • 再通过遍历 SmsMessage 数组,把每一条 SmsMessagegetMessageBody() 组装成短信内容
  • 短信发送者号码可以通过首个 SmsMessage 对象的 getOriginatingAddress() 方法获得
  • 对于双卡手机,还可以在广播到达的 IntentBundle 中, 通过 Bundle.getInt("android.telephony.extra.SLOT_INDEX", -1), 来获取卡槽的位置。0为卡槽1,1为卡槽2。获取失败为-1。

注意:

  • MIUI 等定制系统,申请权限可能不会弹窗,需要手动去设置中打开权限。
  • MIUI 等定制系统,需打开应用的自启动功能,方可在短信到达时后台启动应用,运行广播接收器中相应逻辑。
  • 广播接收器 onReceive 方法的超时限制有 10s,超过10s后系统会弹 ANR 弹窗。

Android 11 使用 BroadcastReceiver 监听短消息的更多相关文章

  1. 通过broadcastreceiver 监听短信问题

    在mainfest中 订阅   短信到来的广播时候  发现找不到 <action android:name="android.provider.Telephony.SMS_RECEIV ...

  2. 【转】]监听SMS消息/编程实现短信拦截

    当设备接收到一条新的SMS消息时,就会广播一个包含了android.provider.Telephony.SMS_RECEIVED动作的Intent.注意,这个动作是一个字符串值,SDK 1.0不再包 ...

  3. Android 监听短信(同时监听广播和数据库)

    暗扣,强烈谴责这种侵害用户利益的行为... 下面给大家介绍Android暗扣原理.......  Android4.4以下的系统玩游戏就要小心了哈 暗扣方式之一:短信订购,即监听--------拦截- ...

  4. Android手机上监听短信的两种方式

    Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...

  5. android 监听短信数据库,制作短信控制工具,控制别人的手机!!(一)

    序言:本程序示例本着简洁易懂的目的,只做了简单的功能实现,需要用户启动应用,收到短信才有效果.作者将会在后面的(二)篇中加入服务后台运行.自动启动功能,实现一个真正的短信控制工具.本文的目的很简单,让 ...

  6. Android手机使用广播监听手机收到的短信

    我们使用的Android手机在收到短信的时候会发出一条系统广播.该条广播中存放着接收到的短信的详细信息.本文将详细介绍如何通过动态注册广播来监听短信. 注册广播有两种方式,一种是动态注册,另一种是静态 ...

  7. android菜鸟学习笔记23----ContentProvider(三)利用内置ContentProvider监听短信及查看联系人

    要使用一个ContentProvider,必须要知道的是它所能匹配的Uri及其数据存储的表的结构. 首先想办法找到访问短信及联系人数据的ContentProvider能接受的Uri: 到github上 ...

  8. android 监听短信并发送到服务器

    1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. 2. 应用观察者模式,监听短信数据库,操作短信内容.   实例如下: SystemE ...

  9. Android笔记--监听短信内容

    监听短信内容 就比如说是在我们用一个软件需要使用"获取验证码"的功能时,能够跟短信的验证码互通,实现较为完整的登录功能: 监听短信内容主要是利用了contentObserver实现 ...

  10. 内容观察者 ContentObserver 监听短信、通话记录数据库 挂断来电

    Activity public class MainActivity extends ListActivity {     private TextView tv_info;     private  ...

随机推荐

  1. 写一段python下载商品图片的代码

    以下是一个简单的Python代码示例,用于下载商品图片: import requests import os def download_image(url, save_path): response ...

  2. 【做题笔记】树形 dp

    luoguP1122 最大子树和 Solve 设计状态 \(dp[i]\) 表示子树 \(i\) 的最大点权和,则有: 当 \(dp[son[i]] > 0\) 时,选以 \(son[i]\) ...

  3. linux下卸载vnc

    sudo apt-get purge realvnc-vnc-server推荐连接:https://askubuntu.com/questions/653321/how-to-uninstall-re ...

  4. mysql拓展

    事务定义 就是将一组SQL语句放在同一批次内去执行 如果一个sql语句出错,则改批次内的所有sql都将被取消执行 (1)原子性 一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作, ...

  5. 解析PPTX 遇到异常:“\b”(十六进制值 0x08)是无效的字符。

    问题描述: 通过DocumentFormat.OpenXml解析PPTX文件时遇到异常:"\b"(十六进制值 0x08)是无效的字符,查看文件发现存在乱码,乱码的十六进制值刚好时异 ...

  6. C# OpenCVSharp图像入门_给绿幕图片视频加背景

    OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库.OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研 ...

  7. Mysql高级8-触发器

    一.触发器 触发器是与表有关的数据库对象,指在insert/update/delete之前或者之后,触发并执行触发器中定义的sql语句集合,触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志 ...

  8. 【LaTeX】语法(更新中)

    目录 长度 空行 空格 超链接 数学公式 段落中(隐式) 单独成段(显式) 居中,左对齐,右对齐 居中 左对齐 右对齐 参考文献配置 TODO 参考资料 中文支持参考环境配置中的 内容,在这里不做重复 ...

  9. 现代 CSS 解决方案:原生嵌套(Nesting)

    很早之前,就写过一篇与原生嵌套相关的文章 -- CSS 即将支持嵌套,SASS/LESS 等预处理器已无用武之地?,彼时 CSS 原生嵌套还处于工作草案 Working Draft (WD) 阶段,而 ...

  10. 低代码引擎 TinyEngine 正式发布!

    在当今数字化飞速发展的时代,企业对高效.敏捷的应用程序需求日益旺盛.为了满足这一需求,越来越多的低代码开发平台开始涌现.这些平台通过提供简单易用的开发工具和优化后的开发流程,帮助开发者快速构建高质量. ...