Android 14 使用前台类型启动前台服务时出现异常

问题描述 投票:0回答:1

我正在尝试更改我的通话应用程序以适应 OS14 行为变化。
当应用程序处于前台状态时,应用程序可以正常工作。这是用于启动前台服务的代码块。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                LogMessage.d(TAG,"#startForeground  handleForegroundPermissionForIncomingCallNotification")
                startForeground(
                    getIncomingCallNotificationId(),
                    getIncomingCallNotification(this, getCallType(), isFullScreenIntent, callUsers),
                    FOREGROUND_SERVICE_TYPE_ALLOWED_SINCE_Q
                )

因此,在前台,上面的应用程序代码工作正常,当我移动到后台状态时,它也工作正常。但是当应用程序处于终止状态时,我收到以下异常。

#startForeground 尝试启动前台时出现异常handleForegroundPermissionForIncomingCallNotification! 使用camera callerApp=ProcessRecord{7e55d22 类型启动 FGS 12942:com.uikit.dev/u0a190} targetSDK=34 需要 权限:所有权限 allOf=true [android.permission.FOREGROUND_SERVICE_CAMERA] 任何权限 allOf=false [android.permission.CAMERA, android.permission.SYSTEM_CAMERA] 并且应用程序必须符合条件 状态/豁免仅访问前台权限



所以当检查android文档时 https://developer.android.com/develop/background-work/services/foreground-services#wiu-restrictions
我看得出来

对于使用中的权限,这会导致潜在的问题。如果你的 应用程序具有使用时权限,它仅在以下情况下具有该权限 它在前台。这意味着如果您的应用程序在后台运行, 它尝试创建一个相机、位置类型的前台服务, 或麦克风,系统发现您的应用当前没有 所需的权限,并抛出 SecurityException。

所以我只是被困在这里,不知道如何在后台创建服务,而我的应用程序需要新引入的前台服务类型。

android kotlin service android-14
1个回答
0
投票

从 AndroidManifest 的

android:foregroundServiceType=
标签中删除“camera”。它失败了,因为您请求了太多的foregroundServiceType,而您只需要
microphone
一个

© www.soinside.com 2019 - 2024. All rights reserved.