首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何注册Android Oreo中不支持的隐式系统广播"android.provider.Telephony.SMS_RECEIVED“

在Android Oreo中,隐式系统广播"android.provider.Telephony.SMS_RECEIVED"被禁止注册,这是为了增强用户隐私和安全性。然而,如果你确实需要在Android Oreo中接收短信广播,可以通过以下步骤进行注册:

  1. 创建一个继承自BroadcastReceiver的类,用于接收短信广播。例如,可以创建一个名为SmsReceiver的类。
代码语言:java
复制
public class SmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 在这里处理接收到的短信广播
    }
}
  1. 在AndroidManifest.xml文件中注册该广播接收器。请确保将intent-filter的priority设置为最高,以便在其他应用程序之前接收到广播。
代码语言:xml
复制
<receiver
    android:name=".SmsReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter android:priority="999">
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>
  1. 在AndroidManifest.xml文件中添加必要的权限,以便接收短信广播。
代码语言:xml
复制
<uses-permission android:name="android.permission.RECEIVE_SMS" />
  1. 在代码中动态请求接收短信的权限。从Android 6.0(API级别23)开始,需要在运行时请求敏感权限。
代码语言:java
复制
if (ContextCompat.checkSelfPermission(context, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.RECEIVE_SMS}, requestCode);
}

以上是在Android Oreo中注册不支持的隐式系统广播"android.provider.Telephony.SMS_RECEIVED"的方法。请注意,这种做法可能会受到用户隐私和安全性的限制,因此在使用时应慎重考虑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 进程保活】应用进程拉活 ( 应用进程拉活简介 | 广播拉活 | 显示广播广播 | 全家桶拉活 )

, 进程被杀死以后 , 如何进行拉活 ; 只要进行进程拉活 , 都会或多或少占用系统资源 , 尤其是内存资源 , 因此 Android 官方对这种操作进行了各种限制 , 从 Android 7.0...- 监听系统广播事件 , 系统在发生特定事件时 , 发出对应事件广播 ; 在 AndroidManifest.xml 静态注册 广播接收者可以接受系统发出广播 , 监听这些广播 , 然后由系统自动拉活广播接收者所在应用进程...清单文件中注册接收广播广播接收者 ; ( 有几种特例 ) Android 8.0 ( API Level 26 ) 后仅有少数几个广播 , 可以在AndroidManifest.xml 清单文件中注册接收到...; 这些广播发出来情况很特殊 , 有可能一天也发不出一条广播 , 用于拉活应用进程不太合适 ; 参考文档 : Android 官方文档 - Oreo 版本适配 : 后台执行限制 Android..., 绝大部分广播都是广播 , 很少有发送广播时候把广播接收者组件名称带上 , 系统广播都是广播 ; 参考文档 : Android 官方文档 - Oreo 版本适配 : 后台执行限制

62120

android广播

:常驻型广播,当你应用程序关闭了,如果有广播信息来,你写广播接收器同样能接收到,他注册方式就是在你应用程序AndroidManifast.xml进行订阅。...这里面还有一个细节那就是这两种订阅方式,在发送广播时候需要注意是:动态注册时候使用intent方式,所以在发送广播时候需要使用Intent去发送,不然是广播接收者是接收不到广播,...但是静态订阅时候,因为在AndroidMainfest.xml订阅,所以在发送广播时候使用显Intent和Intent都可以(当然这个只针对于我们自己定义广播接收者),所以以防万一,我们一般都采用...> 广播常用方式 一个比较常见例子就是自动读取短信验证码/短信拦截 系统在收到短信时候,会发送一个:android.provider.Telephony.SMS_RECEIVED...这样广播,而且这是一个有序广播,所以我们就可以拦截了这条短信,因为系统短信接收者订阅优先级不是1000最高,所以我们可以自己定义一个短信接收者,将订阅优先级设置成1000,这样我们就可以最先获取到短信内容

1.1K20
  • 咦,Oreo怎么收不到广播了?

    我连SystemUI系列文章推进向蜗牛一样慢~ 这篇文章偷个闲,记录下Android8.0上广播限制。 最近在基于Android 8.1系统项目中有用到静态注册广播去监听广播。...原来如此,恍然大悟:Android8.0后,当App targetSDK >= 26,几乎禁止了所有的广播静态注册监听。特在此记录,防止我以后又提莫忘记了。...Android系统会根据意图中设置动作(action)、类别(category)、数据(URI和数据类型)找到最合适组件来处理这个意图。一般是用于在不同应用程序之间。...广播限制:除了有限例外之外,应用无法使用清单注册(静态注册方式来接收广播。 但对于这些广播,可以通过运行时注册(动态注册方式注册。...只不过,在Android8.0上,又进一步增强了限制,除了以下广播外,其他所有广播均无法通过在AndroidManifest.xml中注册监听 // Android 8.0 上不限制广播

    1.9K40

    Android8.0广播和自定义签名权限

    Android官网:Oreo后台执行限制 我们这里主要看对于广播影响,摘抄一段官网上介绍: 广播限制 如果应用注册为接收广播,则在每次发送广播时,应用接收器都会消耗资源。...适配 Android 8.0 或更高版本应用无法继续在其清单广播注册广播接收器。 广播是一种不专门针对该应用广播。...应用可以继续在它们清单中注册广播。 应用可以在运行时使用 Context.registerReceiver() 为任意广播(不管是还是显注册接收器。...应用可以继续在其清单为这些广播注册接收器,不管应用适配哪个 API 级别。 有关已豁免广播列表,请参阅广播例外。...更具上面的描述,我们可以得到一下几点: 适配Android 8.0或更高版本应用无法继续在其清单广播注册广播接收器; 应用可以继续在它们清单中注册广播; 推荐运行时使用Context.registerReceiver

    93520

    Android8.0广播和自定义签名权限

    Android官网:Oreo后台执行限制 我们这里主要看对于广播影响,摘抄一段官网上介绍: 广播限制 如果应用注册为接收广播,则在每次发送广播时,应用接收器都会消耗资源。...适配 Android 8.0 或更高版本应用无法继续在其清单广播注册广播接收器。 广播是一种不专门针对该应用广播。...应用可以继续在它们清单中注册广播。 应用可以在运行时使用 Context.registerReceiver() 为任意广播(不管是还是显注册接收器。...应用可以继续在其清单为这些广播注册接收器,不管应用适配哪个 API 级别。 有关已豁免广播列表,请参阅广播例外。...更具上面的描述,我们可以得到一下几点: 适配Android 8.0或更高版本应用无法继续在其清单广播注册广播接收器; 应用可以继续在它们清单中注册广播; 推荐运行时使用Context.registerReceiver

    1.4K00

    谷歌大开“吃”戒产物,Andriod O全球发布

    后台限制: Android O在以下三大方面对哪些应用可以在后台运行进行了额外自动限制:广播、后台服务和位置更新。 多个 Android 应用和服务可以同时运行。...后台服务限制:处于空闲状态时,应用可以使用后台服务存在限制。 这些限制不适用于前台服务,因为前台服务更容易引起用户注意。 广播限制:除了有限例外情况,应用无法使用清单注册广播。...它们仍然可以在运行时注册这些广播,并且可以使用清单注册专门针对它们广播。...3、检查在您应用清单定义广播接收器。 如果您清单为显广播声明了接收器,您必须予以替换。...可能解决方法包括: ①通过调用 Context.registerReceiver() 而不是在清单声明接收器方式在运行时创建接收器。 ②使用计划作业检查条件是否会触发广播

    90420

    【中文教学视频】Android Oreo 后台进程

    后台运行重要性毋庸置疑 —— 无论是与服务器同步来获取最新内容,还是为您应用运算数据,都需要用到后台运行。然而繁杂后台运行进程也对操作系统造成了不小压力。...对此,Android Oreo 引入了全新后台运行限制,使得有些应用不能在后台任意运行。当然这并不意味着您只能在前台进行计算了,事实上替代方案有很多。...虽然之前我们也发布过相关文章,并附上了英文讲解视频,但为了让开发者们能够更为准确了解 Android Oreo 后台运行限制,我们特地带来了中文版讲解视频,之前没听清楚同学们,过来补补课吧。...Android Oreo 后台进程【中文教学视频】 相关文档 Android 8.0 行为变化 后台运行限制 广播限制例外清单 定位服务限制 作业以及定时作业 JobScheduler 改进...我们期待大家 App 在新舞台上也能获得最佳表现!

    64420

    Android自动填充短信验证码

    demo效果图: 读取短信 Android系统在接受到一条短信时候会发出一条Action为android.provider.Telephony.SMS_RECEIVED有序广播,因此我们读取短信验证码只需要监听这个广播然后提取出短信中验证码即可...private OnReceiveSMSListener mOnReceiveSMSListener; public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED...这里只需将短信验证发送方号码替换成相应号码即可,如“106903561008710”为腾讯云注册发送短信号码。...通常,我们只会在注册或登录页面读取短信验证码,所以,我们采用动态注册广播方式注册这个广播,如: // 注册广播 IntentFilter intentFilter = new IntentFilter...,就是监听广播,读取收到短信,然后过滤筛选出我们要验证码短信,再用正则表达式提取到验证码设置给EditText显示即可。

    5.6K10

    Android实现自动填充短信验证码功能

    读取短信 Android系统在接受到一条短信时候会发出一条Action为android.provider.Telephony.SMS_RECEIVED有序广播,因此我们读取短信验证码只需要监听这个广播然后提取出短信中验证码即可...private OnReceiveSMSListener mOnReceiveSMSListener; public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED...这里只需将短信验证发送方号码替换成相应号码即可,如“106903561008710”为腾讯云注册发送短信号码。...通常,我们只会在注册或登录页面读取短信验证码,所以,我们采用动态注册广播方式注册这个广播,如: // 注册广播 IntentFilter intentFilter = new IntentFilter...,就是监听广播,读取收到短信,然后过滤筛选出我们要验证码短信,再用正则表达式提取到验证码设置给EditText显示即可。

    2.5K30

    Android 四大组件之BroadcastReceiver

    实现原理 Android广播使用了观察者模式:基于消息发布 / 订阅事件模型,将广播发送者和接收者解耦,使得系统方便集成,更易扩展。...App首次启动时,系统会自动实例化 MyBroadcaseReceiver 类,并注册系统。...注意:Android 7.0版本开始,对静态注册广播做了限制,导致静态注册失效。应用无法使用清单注册广播,仍然可以在运行时动态注册这些广播,并且可以使用清单注册专门针对它们广播。...具体可查看:https://developer.android.google.cn/about/versions/oreo/background 动态注册:动态注册 BroadcastReceiver...若发送广播有相应权限,那么广播接收者也需要相应权限 2.系统广播(System Broadcast) Android系统内置了多个系统广播,只要涉及到手机基本操作,基本上都会发出相应系统广播

    1.4K10

    Android自动填充短信验证码

    demo效果图: 读取短信 Android系统在接受到一条短信时候会发出一条Action为android.provider.Telephony.SMS_RECEIVED有序广播,因此我们读取短信验证码只需要监听这个广播然后提取出短信中验证码即可...private OnReceiveSMSListener mOnReceiveSMSListener; public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED...这里只需将短信验证发送方号码替换成相应号码即可,如“106903561008710”为腾讯云注册发送短信号码。...通常,我们只会在注册或登录页面读取短信验证码,所以,我们采用动态注册广播方式注册这个广播,如: // 注册广播 IntentFilter intentFilter = new IntentFilter...,就是监听广播,读取收到短信,然后过滤筛选出我们要验证码短信,再用正则表达式提取到验证码设置给EditText显示即可。

    8.3K30

    Android 面试常问七道题

    Android,活动管理器和窗口管理器这两个系统服务负责监视应用程序响应,当用户操作在5s内应用程序没能做出反应,BroadcastReceiver在10秒内没有执行完毕,就会出现应用程序无响应对话框...属性动画:属性动画不再仅仅是一种视觉效果了,而是一种不断地对值进行操作机制,并将值赋到指定对象指定属性上,可以是任意对象任意属性。 7注册广播有几种方式,有何优缺点?...="android.provider.Telephony.SMS_RECEIVED") 第二种使用代码进行注册: IntentFilter filter...(); registerReceiver(receiver.filter); 两种注册类型区别是: 1)第一种不是常驻型广播,也就是说广播跟随程序生命周期。...2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

    56720

    Android 短信验证码自动填充

    大家好,又见面了,我是你们朋友全栈君。 一、前言: 这周项目做优化,为用户操作更加方便,注册、忘记密码、更换手机号、所需要获取验证码操作,增加 获取短信验证码,然后自动填写到输入框。...思路简单,主要是监听短信广播,然后正则短信中验证码 二、具体代码: package com.taikongdan.app.service; import android.content.BroadcastReceiver...class SMSReceiver extends BroadcastReceiver { public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED...注册广播, @Override protected void onCreate(Bundle savedInstanceState..."); registerReceiver(mReceiver, filter); } 在界面销毁时候 解绑广播 @Override protected

    4.6K30

    Android BroadcastReceiver接收收到短信广播

    一、知识介绍   1、broadcastReceiver是广播接受者,四大组件之一。   2、Android内置了很多系统级别的广播,可以在应用程序得到各种系统状态信息。   ...4、一个程序发出广播信息,一个程序接收广播信息,所以至少需要2个程序才能完成一发一收。发一方,叫广播发送方;收一方,叫广播接收者。   5、广播接受者需要进行注册。...动态注册,静态注册(在AndroidManiFest文件)   二、项目实践 【步骤】   ①定义广播接受者   ②进行注册,添加过滤器 intent-filter,接收特定广播   ③重写onReceiver...【小结】   ①这里是接收系统广播,也可以自己定义广播。以及可以添加很多功能,接收到广播进行特定操作。   ...②广播必须添加过滤器,对特定广播进行接收   ③如果是接收系统广播要进行权限申请,5.0之后一定要进行动态权限申请才可以 以上就是本文全部内容,希望对大家学习有所帮助。

    4K20

    17 个必须掌握 BroadcastReceiver 知识点「建议收藏」

    可通过 标签设置 android:property 属性来设置优先级,未设置时按照注册顺序接收广播。 有序广播接受器间可以互传数据。...常见系统广播 Intent Action 为如下值: 短信提醒:android.provider.Telephony.SMS_RECEIVED 电量过低:ACTION_BATIERY_LOW...从 Android 8.0 开始,对于大多数广播,不能在 AndroidManifest 文件声明接收器。...相比在系统内发送全局广播,它更高效。 1.10 如何让自己广播只让指定 app 接收? 在发送广播 app 端,自定义定义权限, 那么想要接收另外 app 端必须声明权限才能收到....优先级对无序也生效. 1.12 动态注册广播优先级谁高? 谁先注册,谁就高 1.13 如何判断当前 BrodcastReceiver 接收到是有序还是无序广播?

    1.6K31

    从0系统Android--5.2 发送广播

    从0系统Android--52 发送广播 ? ? 本系列持续更新…....8.0前是好用,在 8.0 后进行了限制,限制通过静态注册来接受广播详见。...其实对于部分广播也是可以比如开机广播 通过这个限制我们可以得到解决办法有两种: 1.不通过静态注册接收器,通过动态注册就可以了 2.通过静态注册接收器,但是发送广播不要是。...5.3.2 发送有序广播 广播是一种跨进程通信,也就是说可以让不同应用程序进行通信 如何发送有序广播呢?...5.4 使用本地广播 前面我们发送和接受广播全部属于系统全局广播,也就是说这些广播可以被系统其他应用程序接收到,并且我们也可以接受到来自其他任何应用广播。这样容易引起安全问题。

    53610

    Android O 广播限制

    Android O进一步限制 在Android 8.0 或更高版本应用无法继续在其AndroidManifest广播注册BroadcastReceiver。...广播是一种不专门针对该应用广播。 例如,ACTION_PACKAGE_REPLACED 就是一种广播,因为该广播将被发送给所有已注册侦听器,让后者知道设备上某些软件包已被替换。...应用可以继续在它们清单中注册广播。 应用可以在运行时使用 Context.registerReceiver() 为任意广播(不管是还是显注册接收器。...为了迁移到 Android 8.0 或更高版本,应用将该接收器从其清单移除。 应用将清理作业安排在设备处于空闲状态和充电时运行。 例外广播 很多广播当前已不受此限制所限。...应用可以继续在其清单为这些广播注册接收器,不管应用适配哪个 API 级别。 注意:即使这些广播仍然可以在后台工作,但你应该尽量避免对它们注册监听。

    3.8K31
    领券