Я работаю над приложением, которое требуется для работы с Bluetooth Classic, поэтому мне нужно внедрить **** foreground service ****, чтобы система прослушивания не убивала систему для оптимизации использования батареи.
Я изо всех сил пытаюсь заставить работать службу переднего плана на API 28. Мой код работает на Android 9.0 Pie, но когда я запускаю его на Android 8.0, я получаю RemoteException rethrowFromSystemServer - "Невозможно запустить исключение с аргументами ..." из метода onStartCommand.
Чтобы повторить эту ошибку, просто клонируйте этот репозиторий и попробуйте установить compileSdk и targetSdk в 28.
https://github.com/paulpv/ForegroundServiceAPI26/tree/repro/app/src/main/java/com/github/paulpv/foregroundserviceapi26
Я повторяю - Все работает на Android 9.0 Pie, просто не работает, например. на Android 8.0, поэтому это не вызвано тем, что вы не добавили службу в манифест или не добавили уведомление или канал уведомлений.
Еще одно мое замечание - когда я понижаю compileSdk и targetSdk до 27, все работает нормально, проблема только с последним API 28.
Есть идеи, как правильно создать сервис переднего плана на API 28?
//Starting service
if (Build.VERSION.SDK_INT >= 26) {
context.startForegroundService(intent)
} else {
context.startService(intent)
}
//Calling startForeground in onCreate of service
override fun onCreate() {
val pIntent = PendingIntent.getActivity(this, 0,
Intent(this, MainService::class.java), 0)
val notification = NotificationCompat.Builder(this)
.setContentTitle("My App")
.setContentText("Doing some work...")
.setContentIntent(pIntent).build()
startForeground(1000, notification)
}