我已经使用 WorkManager 实现了 Foreground Service,它在 API 级别 33 之前都可以正常工作。由于在 API 级别 34 中必须指定 foregroundServiceType,因此我在 Worker 和 Manifest 中指定了它,但收到此错误。
AndroidManifest.xml
所需权限:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<service
android:name=".services.DownloadService"
android:exported="false"
android:enabled="true"
tools:node="merge"
android:foregroundServiceType="dataSync"/>
Run Code Online (Sandbox Code Playgroud)
内部工人:
setForegroundAsync(
ForegroundInfo(
NOTIFICATION_ID,
getNotification(),
ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC
)
)
Run Code Online (Sandbox Code Playgroud)
出现此错误
java.lang.IllegalArgumentException: foregroundServiceType 0x00000001 不是android.os.Parcel.createException(Parcel.java:处 android.os.Parcel.createExceptionOrNull(Parcel.java:3015) 处清单文件的服务元素中 foregroundServiceType 属性 0x00000000 的子集2995)
在 android.os.Parcel.readException(Parcel.java:2978)
在 android.os.Parcel.readException(Parcel.java:2920)
在 android.app.IActivityManager$Stub$Proxy.setServiceForeground(IActivityManager.java:6079) )在 android.app.Service.startForeground(Service.java:797) ...
我尝试到处做一些改变,但没有任何效果。