Android 10.0 添加自定义开机广播

本文介绍了如何在Android 10.0系统中添加自定义开机广播,以解决普通应用无法直接接收开机广播的问题。通过分析开机广播发送的位置,如UserController.java,以及添加自定义广播的代码,包括设置Intent.FLAG_RECEIVER_NO_ABORT以防止广播被取消。同时,文章提及了解决因发送自定义广播而产生的系统日志异常的方法。
摘要由CSDN通过智能技术生成

1.概述

由于系统开机广播接收受限,普通app接收不到这个广播,如果接收这个广播很多应用 感觉要好久收到这个广播,所以需要自定义开机广播来使用自定义广播开启某些应用,实现自己的功能

2.添加自定义广播的核心代码

frameworks\base\services\core\java\com\android\server\am\UserController.java

3.添加自定义广播的核心代码功能分析和实现功能

3.1首先来找到开机广播发送的地方

发送开机广播为Intent.ACTION_BOO

Android 10及后续版本中,为了允许应用在开机时自动启动,你需要在应用的清单文件`android manifest.xml`中进行特定配置。以下是步骤: 1. 打开`AndroidManifest.xml`文件,它通常位于项目根目录下的`src/main/AndroidManifest.xml`。 2. 检查`<application>`标签下是否已经有了`<receiver>`标签。如果没有,你需要创建一个新的`<receiver>`元素,指定其`android:name`属性为你应用的BroadcastReceiver类名(这个类通常会覆盖系统的行为,比如启动服务): ```xml <receiver android:name=".YourBootReceiver"> <!-- 其他必要的接收器属性 --> </receiver> ``` 确保你的接收器类继承自`IntentFilter`并实现了`BroadcastReceiver`接口。 3. 在`<receiver>`标签中添加`android:enabled="true"`和`android:exported="true"`属性,以便于系统和其他应用能访问到你的接收器: ```xml <receiver android:name=".YourBootReceiver" android:enabled="true" android:exported="true"> <!-- ... --> </receiver> ``` 4. 如果你想让应用在开机时立即运行某个任务,例如启动一个服务,可以在`<receiver>`里添加一个意图过滤器,指向`ACTION_BOOT_COMPLETED`,这是设备启动完成后的标准广播动作: ```xml <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> ``` 5. 确保你的应用有运行在后台的服务或者启动活动,并在相应的生命周期方法(如`onStartCommand()`或`onCreate()`)中处理启动请求。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安卓兼职framework应用工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值