android - 我的应用在 API 级别 30 上未收到 RECEIVE_BOOT_COMPLETED,但在 API 级别 21 上收到
问题描述
我已经通过输入manifest
并实现 RECEIVE_BOOT_COMPLETED 来实现MyBootReceiver.onReceive(..)
。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
....
<receiver
android:name=".MyBootReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>
</intent-filter>
</receiver>
在模拟器(Pixel 2 API 21)上运行时效果很好。但是,当它在 API 级别 30 或物理设备 OnePlus 6 (Oxygen 10.3.7) 上运行时,不会收到 BOOT 通知。
但是,当手机重新启动时,Whatsapp、Sms 等其他应用程序能够从服务器接收消息,可能使用一些通知事件。这怎么可能?
我错过了什么吗?
解决方案
一加和小米已经在 Android 之上定制了他们的操作系统。所以他们已经覆盖了这个功能。请参阅Android 设备重启后广播接收器不工作
在较新的 Android 版本上,您需要运行 adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -p com.mypackage.name。在不限制广播到您的应用程序的情况下,您的设备实际上会重新启动
regd你的问题,
但是,当手机重新启动时,Whatsapp、Sms 等其他应用程序能够从服务器接收消息,可能使用一些通知事件。这怎么可能?
也可以通过访问电话网络状态
推荐阅读
- python - 使用 selenium python 加载每个页面的时间
- python-3.x - MongoEngine中的多个文档更新
- python - Python 代码在 Visual Studio 代码中显示 EOF 错误,但在 Visual Studio 中工作正常
- java - 在 Android 中使用 Niimbot 蓝牙打印机进行打印
- c - SDL_CreateRGBSurfaceFrom() 无法编译?
- forms - MS Access VBA DoCmd.OpenForm 使用 where 子句不过滤基于 DAO 查询的记录集
- java - java Eclipse中的HTML标签
- python - 从烧瓶应用程序将输出返回给邮递员
- javascript - 如何通过 Javascript 获取链接的状态(悬停,活动,..)?
- python - 如何获取表中最频繁的行