OpenTracksApp / OpenTracks

OpenTracks is a sport tracking application that completely respects your privacy.
https://OpenTracksApp.com
Apache License 2.0
1.02k stars 190 forks source link

Opentracks fails with exception when started through a fitness tracker activity via gadgetbridge #1347

Closed benedetto closed 2 years ago

benedetto commented 2 years ago

App information

Device information

Firmware

Cause of error

Exception in thread "main": java.lang.RuntimeException: Unable to start activity ComponentInfo{de.dennisguse.opentracks/de.dennisguse.opentracks.publicapi.StopRecording}: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=de.dennisguse.opentracks/.services.TrackRecordingService }: app is in background uid UidRecord{34fc9b2 u0a2 TPSL idle change:idle|cached procs:1 seq(0,0,0)}
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3432)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3596)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2067)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7705)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:952)
Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=de.dennisguse.opentracks/.services.TrackRecordingService }: app is in background uid UidRecord{34fc9b2 u0a2 TPSL idle change:idle|cached procs:1 seq(0,0,0)}
    at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1715)
    at android.app.ContextImpl.startService(ContextImpl.java:1670)
    at android.content.ContextWrapper.startService(ContextWrapper.java:720)
    at android.content.ContextWrapper.startService(ContextWrapper.java:720)
    at de.dennisguse.opentracks.services.TrackRecordingServiceConnection.startAndBind(TrackRecordingServiceConnection.java:77)
    at de.dennisguse.opentracks.publicapi.AbstractAPIActivity.onCreate(AbstractAPIActivity.java:37)
    at android.app.Activity.performCreate(Activity.java:7994)
    at android.app.Activity.performCreate(Activity.java:7978)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1310)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3405)
    ... 11 more

Steps to reproduce

  1. Configure Mi Band 5 via Gadgetbridge to start an opentracks recording automatically when a training sequence is started in the band.
  2. Start an activity from the band.

Hint: if I start or stop an opentracks activity via the "start activity" button in Gadgetbridge's debug menu, everything works as expected.

dennisguse commented 2 years ago

Duplicate of #1301; fixed in v4.0.6 (released yesterday).

Thanks for the detailed report!