如果应用以 Android 14 为目标平台,则必须为应用中的每个前台服务指定至少一种前台Service类型
(需开启前台Service的模块需要重点关注)。
1.什么是前台Service?
前台服务显示状态栏通知,让用户知道APP正在前台执行任务并且正在消耗系统资源。(微信共享位置,音乐播放器,健身程序,定位程序),绝大多数情况下:它可以一直保持运行状态而不被系统回收
2.Service权限的改变
2.1 Android 11开始
如果需要一直使用(location、camera、microphone)隐私权限,需要启动服务时获取用户同意。以位置为例,那么仅仅声明这种service类型就可以:
xml
<manifest>
...
<service ...
android:foregroundServiceType="location" />
</manifest>
可以看到,图中多了一个"仅限这一次"的选项。如果用户选择了这个选项,那么在整个应用程序的生命周期内,我们都是可以获取到摄像机数据的。但是当下次启动程序时,则需要再次请求权限。
2.2 Android 14
- Android 14规定必须为应用内的每个前台服务指定至少一种前台服务类型。您应该选择代表您的应用程序用例的前台服务类型。Android 14 引入了用于 健康和远程消息传递用例的前台服务类型。该系统还为短服务、特殊用例和系统豁免保留新类型。
谷歌提供了以下可以选择的额多种前台服务类型,可以选择单一,也可以组合选择。
camera
connectedDevice
dataSync
health
location
mediaPlayback
mediaProjection
microphone
phoneCall
remoteMessaging
shortService
specialUse
systemExempted
- 不能以上的前台service类型准确相关联的应用,一般情况下可以使用specialUse,涵盖其他前台服务类型未涵盖的任何有效前台服务用例。
ini
<manifest ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="specialUse"
android:exported="false">
</service>
</application>
</manifest>