Android: use startForegroundService() in Android 8+

Fixes the error:

 IllegalStateException: Not allowed to start service Intent { cmp=org.musicpd/.Main (has extras) }: app is in background
This commit is contained in:
Max Kellermann 2021-05-31 20:37:10 +02:00
parent ac59ec34f9
commit ab487b9a99
2 changed files with 12 additions and 1 deletions

2
NEWS
View File

@ -4,6 +4,8 @@ ver 0.22.9 (not yet released)
* decoder * decoder
- ffmpeg: support the tags "sort_album", "album-sort", "artist-sort" - ffmpeg: support the tags "sort_album", "album-sort", "artist-sort"
- ffmpeg: fix build failure with FFmpeg 3.4 - ffmpeg: fix build failure with FFmpeg 3.4
* Android
- fix auto-start on boot in Android 8 or later
* Windows * Windows
- fix build failure with SQLite - fix build failure with SQLite

View File

@ -414,6 +414,15 @@ public class Main extends Service implements Runnable {
* start Main service without any callback * start Main service without any callback
*/ */
public static void start(Context context, boolean wakelock) { public static void start(Context context, boolean wakelock) {
context.startService(new Intent(context, Main.class).putExtra("wakelock", wakelock)); Intent intent = new Intent(context, Main.class)
.putExtra("wakelock", wakelock);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
/* in Android 8+, we need to use this method
or else we'll get "IllegalStateException:
app is in background" */
context.startForegroundService(intent);
else
context.startService(intent);
} }
} }