首页 > 解决方案 > 在面向 Oreo 的 Android 应用上使用 Android 广播

问题描述

我计划将我的 Android 应用程序定位到 Oreo,但文档中提到不再允许在 Android Manifest 中声明隐式广播。这里很少有例外。

我正在使用这些广播

<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>

任何人都可以帮助我知道上述广播中的哪些内容是不允许的。如果我继续使用它们会怎样?

标签: javaandroidbroadcastreceiverandroid-8.0-oreoandroid-broadcast

解决方案


android.intent.action.BOOT_COMPLETED并且android.intent.action.TIME_SET您链接到的白名单上。这些广播应该像往常一样工作。

android.intent.action.MY_PACKAGE_REPLACED不是隐式广播。它将通过明确的Intent. 这应该像往常一样工作。

两者都不android.intent.action.QUICKBOOT_POWERONcom.android.vending.INSTALL_REFERRERAndroid SDK 的一部分,因此您需要研究那些定义和发送这些广播的人。


推荐阅读