Ошибка Starting FGS with type mediaProjection
Вчера с ничего просто перестал работать код записи экрана. Проверил в коде всё нормально, как и было до ошибки. Ума не приложу, что случилось. Приложение стало крашится при запуске с ошибкой:
Вы в ScreenCapService
2023-12-26 12:38:10.440 23479-23479 AndroidRuntime com.example.testsub D Shutting down VM
2023-12-26 12:38:10.443 23479-23479 AndroidRuntime com.example.testsub E FATAL EXCEPTION: main (Ask Studio Bot)
Process: com.example.testsub, PID: 23479
java.lang.RuntimeException: Unable to create service com.example.testsub.ScreenCapService: java.lang.SecurityException: Starting FGS with type mediaProjection callerApp=ProcessRecord{3dbc7e 23479:com.example.testsub/u0a292} targetSDK=34 requires permissions: all of the permissions allOf=true [android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION] any of the permissions allOf=false [android.permission.CAPTURE_VIDEO_OUTPUT, android:project_media]
at android.app.ActivityThread.handleCreateService(ActivityThread.java:4852)
at android.app.ActivityThread.-$$Nest$mhandleCreateService(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2358)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8470)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
Caused by: java.lang.SecurityException: Starting FGS with type mediaProjection callerApp=ProcessRecord{3dbc7e 23479:com.example.testsub/u0a292} targetSDK=34 requires permissions: all of the permissions allOf=true [android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION] any of the permissions allOf=false [android.permission.CAPTURE_VIDEO_OUTPUT, android:project_media]
at android.os.Parcel.createExceptionOrNull(Parcel.java:3160)
at android.os.Parcel.createException(Parcel.java:3144)
at android.os.Parcel.readException(Parcel.java:3127)
at android.os.Parcel.readException(Parcel.java:3069)
at android.app.IActivityManager$Stub$Proxy.setServiceForeground(IActivityManager.java:6861)
at android.app.Service.startForeground(Service.java:775)
at com.example.testsub.ScreenCapService.onCreate(MainActivity.kt:216)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:4839)
at android.app.ActivityThread.-$$Nest$mhandleCreateService(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2358)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8470)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.am.ActiveServices.validateForegroundServiceType(ActiveServices.java:2684)
at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked(ActiveServices.java:2374)
at com.android.server.am.ActiveServices.setServiceForegroundLocked(ActiveServices.java:1703)
at com.android.server.am.ActivityManagerService.setServiceForeground(ActivityManagerService.java:13592)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:3430)
Вот код где программа крашится:
class ScreenCapService : Service() {
override fun onCreate() {
super.onCreate()
Log.i(TAG, "Вы в ScreenCapService")
val serviceChannel = NotificationChannel(
"1",
"Foreground Service Channel",
NotificationManager.IMPORTANCE_DEFAULT
)
getSystemService(NotificationManager::class.java).createNotificationChannel(serviceChannel)
val notification: Notification = Notification.Builder(this, "1")
.setContentTitle("Foreground Service")
.build()
startForeground(1, notification) <-----На этой строчке всё ломается
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
}
Вот часть манифеста:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.BATTERY_STATS" tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION"/>
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Testsub"
>
<service android:enabled="true"
android:name=".ScreenCapService"
android:foregroundServiceType="mediaProjection"> </service>
Может кто знает что случилось? Android 14, Pixel 6 Pro. Устройство рутировано.