在针对 Oreo 的 Android 应用上使用 Android 广播

Working with Android Broadcast on an Android App targeting Oreo

我计划将我的 Android 应用定位到 Oreo,但文档提到不再允许在 Android 清单中声明隐式广播。很少有例外 here.

我正在使用这些广播

<receiver android:name=".ABC">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    </intent-filter>
</receiver>

<receiver android:name=".ABCD">
    <intent-filter>
        <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
    </intent-filter>
</receiver>

<receiver android:name=".ABCDE">
    <intent-filter>
        <action android:name="android.intent.action.TIME_SET" />
    </intent-filter>
</receiver>

<receiver android:name=".ABCDEF" />

<receiver
    android:name=".ABCDEFG"
    android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

谁能帮我知道上面的广播是不允许的。还有如果我继续使用它们会发生什么?

android.intent.action.BOOT_COMPLETEDandroid.intent.action.TIME_SETthe whitelist that you linked to 上。这些广播应该像往常一样工作。

android.intent.action.MY_PACKAGE_REPLACED 不是隐式广播。通过显式 Intent,它将仅对您的应用 "broadcast"。这应该像往常一样工作。

android.intent.action.QUICKBOOT_POWERONcom.android.vending.INSTALL_REFERRER 都不是 Android SDK 的一部分,因此您需要与定义和发送这些广播的人进行研究。