Android 10 BOOT_COMPLETED 应用程序未收到广播

Android 10 BOOT_COMPLETED Broadcast not received to application

我必须 运行 使用 BOOT_COMPLETED 广播的服务,但是当 Android 10 设备正在启动时,我收到以下警告。

system_process W/BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.LOCKED_BOOT_COMPLETED flg=0x400010 } to com.rahul.http/.BootReceiver

主要清单:

 <service
        android:name=".HttpUpdateService"
        android:enabled="true"
        android:directBootAware="true"
        android:exported="true">
        
    </service>

    <receiver android:name=".BootReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
        android:exported="true"

        >
        <intent-filter android:priority="999">
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />

        </intent-filter>
    </receiver>

我还添加了接收 boot_complete 广播的权限。

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

我的申请中没有任何 activity。

尝试将 android:directBootAware 添加到您的 <receiver,如 DOCs

当您收到广播接收器的意图时,您必须添加检查您的应用程序目标是否低于 Android O 版本。是这样的: 如果应用构建版本大于 android O,则必须使用提供的意图调用 startForegroundService 方法。否则你只是调用方法 startService 提供的意图。

尝试在清单中的应用程序标记中添加以下属性: android:directBootAware="true"