我正在尝试更改我的通话应用程序以适应 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。
所以我只是被困在这里,不知道如何在后台创建服务,而我的应用程序需要新引入的前台服务类型。
从 AndroidManifest 的
android:foregroundServiceType=
标签中删除“camera”。它失败了,因为您请求了太多的foregroundServiceType,而您只需要microphone
一个