java.lang.Исключение IllegalStateException: Не разрешено запускать намерение службы {cmp=*.*.*/org.altbeacon.beacon.service.BeaconService} :приложение находится в фоновом режиме uid

#android #kotlin #bluetooth #ibeacon #altbeacon

Вопрос:

Мы работаем над сканированием маяка в фоновом режиме. Для этого я использовал библиотеку AltBeacon для фонового сканирования. Фоновое сканирование работает абсолютно нормально, но когда я убиваю приложение, появляется ошибка ниже:

Трассировка стека:

 FATAL EXCEPTION: main
Process: com.demobeacon.android, PID: 24256
java.lang.RuntimeException: Unable to create application com.demobeacon.DemoBeaconApplication: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.demobeacon.android/org.altbeacon.beacon.service.BeaconService }: app is in background uid UidRecord{1b57628 u0a606 TRNB idle procs:1 seq(0,0,0)}
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5829)
    at android.app.ActivityThread.-wrap1(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1685)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:176)
    at android.app.ActivityThread.main(ActivityThread.java:6651)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
 Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.demobeacon.android/org.altbeacon.beacon.service.BeaconService }: app is in background uid UidRecord{1b57628 u0a606 TRNB idle procs:1 seq(0,0,0)}
    at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1531)
    at android.app.ContextImpl.startService(ContextImpl.java:1487)
    at android.content.ContextWrapper.startService(ContextWrapper.java:660)
    at org.altbeacon.beacon.startup.RegionBootstrap$InternalBeaconConsumer.bindService(RegionBootstrap.java:228)
    at org.altbeacon.beacon.BeaconManager.bind(BeaconManager.java:477)
    at org.altbeacon.beacon.startup.RegionBootstrap.<init>(RegionBootstrap.java:114)
    at com.demobeacon.DemoBeaconApplication.onCreate(DemoBeaconApplication.kt:170)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1120)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5826)
 

Для получения дополнительной информации ознакомьтесь с приведенными ниже фрагментами кода:

  beaconManager = BeaconManager.getInstanceForApplication(this) 
    beaconManager?.backgroundMode = true
    beaconManager?.disableForegroundServiceScanning()
    beaconManager?.setEnableScheduledScanJobs(false)
    beaconManager?.backgroundBetweenScanPeriod = 0
    beaconManager?.backgroundScanPeriod = 1100

    beaconManager?.beaconParsers?.add( BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"))

    BluetoothMedic.getInstance().setNotificationsEnabled( true,  org.altbeacon.beacon.R.drawable.notification_icon_background )
    BluetoothMedic.getInstance().enablePowerCycleOnFailures(this)
    BluetoothMedic.getInstance().enablePeriodicTests(this, BluetoothMedic.SCAN_TEST BluetoothMedic.TRANSMIT_TEST)

    region = Region("wildcard-region", null, null, null)
    regionBootstrap = RegionBootstrap(this, region) 
    BackgroundPowerSaver(this)
 

Как справиться с этой ошибкой? Заранее большое вам спасибо !

Комментарии:

1. github.com/AltBeacon/android-beacon-library/pull/1030

2. @CommonsWare Спасибо, я проверю .

3. @CommonsWare не работает в фоновом режиме.

4. Затем создайте воспроизводимый проект, демонстрирующий проблему, и отправьте отчет об ошибке разработчикам библиотеки.