现在从奥利奥开始,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>
,我可以想到两个选项:
奥前版本和奥利奥后版本提供单独的产品风格,并在清单中将源集的
<intent-filter>
与您的奥利奥前口味相关联。有两个
<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>
)。
但是,这些都不需要。只需不要管您的清单,请记住您将不会收到所需的广播。