隐式广播:如何保持奥利奥前的向后兼容性



现在从奥利奥开始,Android应用程序应该删除清单文件中的所有隐式广播。

对于我的音乐播放器应用程序,对于早期版本,我需要在清单中声明以下操作:

<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
<action android:name="android.intent.action.HEADSET_PLUG" />
</intent-filter>

我不知道 android 是否支持像在资源中一样为每个 api 版本声明一个清单文件。

因此,如何保持向后兼容性,因为早期版本要求在清单中声明此广播。

谢谢

现在从奥利奥开始,Android 应用程序应该删除清单文件的所有隐式广播。

欢迎您在清单中注册广播。您只是不会在Android 8.0 +上收到这些广播。

我不知道 android 是否支持像在资源中一样为每个 api 版本声明一个清单文件

没有。

如果出于某种原因您真的不想在 Android 8.0+ 的清单中包含该<intent-filter>,我可以想到两个选项:

为奥利
  1. 奥前版本和奥利奥后版本提供单独的产品风格,并在清单中将源集的<intent-filter>与您的奥利奥前口味相关联。

  2. 有两个<receiver>元素,指向不同的接收器类,其中一个只是另一个的简单子类。在两个<receiver>元素之一上,有你的<intent-filter>.然后,有一个res/values/bools.xml文件,将布尔资源(例如,listenToMusic)定义为true,以及一个res/values-v26/bools.xml文件,将相同的资源定义为false。在<receiver><intent-filter>,有android:enabled="@bool/listenToMusic",以便在Android 8.0+上禁用特定的接收器(及其<intent-filter>)。

但是,这些都不需要。只需不要管您的清单,请记住您将不会收到所需的广播。

最新更新