Android 14 之 应用必须指定前台Service类型 (Foreground service types are required)

如果应用以 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
复制代码
  谷歌提供了以下可以选择的额多种前台服务类型,可以选择单一,也可以组合选择。
  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>
相关推荐
大傻^32 分钟前
LangChain4j Spring Boot Starter:自动配置与声明式 Bean 管理
java·人工智能·spring boot·spring·langchain4j
沐硕34 分钟前
《基于改进协同过滤与多目标优化的健康饮食推荐系统设计与实现》
java·python·算法·fastapi·多目标优化·饮食推荐·改进协同过滤
愣头不青1 小时前
560.和为k的子数组
java·数据结构
共享家95271 小时前
Java入门(String类)
java·开发语言
Georgewu1 小时前
如何判断应用在鸿蒙卓易通或者出境易环境下?
android·harmonyos
l软件定制开发工作室1 小时前
Spring开发系列教程(34)——打包Spring Boot应用
java·spring boot·后端·spring·springboot
0xDevNull1 小时前
Spring Boot 循环依赖解决方案完全指南
java·开发语言·spring
爱丽_1 小时前
GC 怎么判定“该回收谁”:GC Roots、可达性分析、四种引用与回收算法
java·jvm·算法
bbq粉刷匠1 小时前
Java--多线程--单例模式
java·开发语言·单例模式
随风,奔跑1 小时前
Spring MVC
java·后端·spring