隐式广播:如何保持 pre-oreo 向后兼容性
Implicit Broadcasts: how to retain pre-oreo backwards compatibility
从 Oreo 开始,Android 应用程序应删除清单文件中的所有隐式广播。
对于我的音乐播放器应用程序,对于早期版本,我需要在清单中声明这些操作:
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
<action android:name="android.intent.action.HEADSET_PLUG" />
</intent-filter>
我不知道 android 是否支持像在资源中那样为每个 api 版本声明清单文件。
那么如何保持向后兼容性,因为早期版本要求在清单中声明此广播。
谢谢
Now as of Oreo, Android apps should remove all implicit broadcasts for the manifest file.
欢迎您在清单中注册广播。您只是不会在 Android 8.0+.
上收到这些广播
I don't know if android supports declaring a manifest file per api version like in resources or not
不是真的。
如果出于某种原因您真的不想在 Android 8.0+ 的清单中包含 <intent-filter>
,我可以想到两个选项:
为 pre-Oreo 和 post-Oreo 版本提供不同的产品口味,并在源集的清单中将 <intent-filter>
与您的 pre-Oreo 口味相关联.
有两个<receiver>
元素,指向不同的接收者类,其中一个只是另一个的简单子类。在两个 <receiver>
元素之一上,有你的 <intent-filter>
。然后,有一个 res/values/bools.xml
文件将布尔资源(例如 listenToMusic
)定义为 true
,以及一个 res/values-v26/bools.xml
文件将相同的资源定义为 false
.在带有 <intent-filter>
的 <receiver>
中,有 android:enabled="@bool/listenToMusic"
,这样特定的接收器(及其 <intent-filter>
)将在 Android 8.0+ 上被禁用。
但是,这些都不需要。请不要管您的清单,请记住您不会收到所需的广播。
从 Oreo 开始,Android 应用程序应删除清单文件中的所有隐式广播。
对于我的音乐播放器应用程序,对于早期版本,我需要在清单中声明这些操作:
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
<action android:name="android.intent.action.HEADSET_PLUG" />
</intent-filter>
我不知道 android 是否支持像在资源中那样为每个 api 版本声明清单文件。
那么如何保持向后兼容性,因为早期版本要求在清单中声明此广播。
谢谢
Now as of Oreo, Android apps should remove all implicit broadcasts for the manifest file.
欢迎您在清单中注册广播。您只是不会在 Android 8.0+.
上收到这些广播I don't know if android supports declaring a manifest file per api version like in resources or not
不是真的。
如果出于某种原因您真的不想在 Android 8.0+ 的清单中包含 <intent-filter>
,我可以想到两个选项:
为 pre-Oreo 和 post-Oreo 版本提供不同的产品口味,并在源集的清单中将
<intent-filter>
与您的 pre-Oreo 口味相关联.有两个
<receiver>
元素,指向不同的接收者类,其中一个只是另一个的简单子类。在两个<receiver>
元素之一上,有你的<intent-filter>
。然后,有一个res/values/bools.xml
文件将布尔资源(例如listenToMusic
)定义为true
,以及一个res/values-v26/bools.xml
文件将相同的资源定义为false
.在带有<intent-filter>
的<receiver>
中,有android:enabled="@bool/listenToMusic"
,这样特定的接收器(及其<intent-filter>
)将在 Android 8.0+ 上被禁用。
但是,这些都不需要。请不要管您的清单,请记住您不会收到所需的广播。