From 29b17bd8e41eebf34a538cd48cdb5bc4123726c8 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Sun, 6 Jun 2021 10:50:00 +0200 Subject: [PATCH] android:: fixed the 'game in progress' notifications for Android 28 and 29 --- .../hyperroid/ForegroundService.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/hyperroid/app/src/main/java/com/roguetemple/hyperroid/ForegroundService.java b/hyperroid/app/src/main/java/com/roguetemple/hyperroid/ForegroundService.java index ee15569b..4bd3beee 100644 --- a/hyperroid/app/src/main/java/com/roguetemple/hyperroid/ForegroundService.java +++ b/hyperroid/app/src/main/java/com/roguetemple/hyperroid/ForegroundService.java @@ -3,21 +3,42 @@ package com.roguetemple.hyperroid; import android.app.Notification; import android.app.PendingIntent; import android.app.Service; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.os.Build; import android.os.IBinder; import android.support.v4.app.NotificationCompat; import android.util.Log; import android.widget.Toast; + + import android.app.NotificationChannel; +import android.app.NotificationManager; + public class ForegroundService extends Service { public static String MAIN_ACTION = "com.roguetemple.hyperroid.action.main"; public static String STARTFOREGROUND_ACTION = "com.roguetemple.hyperroid.action.startforeground"; public static String STOPFOREGROUND_ACTION = "com.roguetemple.hyperroid.action.stopforeground"; public static int FOREGROUND_SERVICE = 101; - + + public String getChannelId() { + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return ""; + String NOTIFICATION_CHANNEL_ID = "com.roguetemple.hyperrogue"; + String channelName = "HyperRogue game in progress"; + NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE); + chan.setLightColor(Color.BLUE); + chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); + NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + assert manager != null; + manager.createNotificationChannel(chan); + return NOTIFICATION_CHANNEL_ID; + } + @Override public int onStartCommand(Intent intent, int flags, int startId) { if (intent.getAction().equals(STARTFOREGROUND_ACTION)) { @@ -30,8 +51,8 @@ public class ForegroundService extends Service { PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); - - Notification notification = new NotificationCompat.Builder(this) + + Notification notification = new NotificationCompat.Builder(this, getChannelId()) .setContentTitle("HyperRogue") .setContentText("Game in progress.") .setTicker("Game in progress. Game in progress. Game in progress.")