summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilal Alsharifi <599206+bilal-alsharifi@users.noreply.github.com>2020-02-24 10:55:57 -0500
committerGitHub <noreply@github.com>2020-02-24 10:55:57 -0500
commit6c24b9efbb2f4d93187c2b711d30f72983a640c5 (patch)
treec4eeb900af7313935abaf590c692636761854626
parent4ccf293b03d96eb0f85caba3d100b4d49e11f49e (diff)
parent024cebb2bd45ebcb5cf818e3c2ac5fa77c7b5a7f (diff)
downloadsdl_android-6c24b9efbb2f4d93187c2b711d30f72983a640c5.tar.gz
Merge pull request #1271 from smartdevicelink/bugfix/notification_removal_delay
Delete notification channel when possible
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java27
-rw-r--r--android/sdl_android/src/main/res/values/sdl.xml2
2 files changed, 26 insertions, 3 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
index 3abd61094..bd86f86c2 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
@@ -69,6 +69,7 @@ import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.Parcelable;
import android.os.RemoteException;
+import android.service.notification.StatusBarNotification;
import android.support.annotation.NonNull;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
@@ -138,7 +139,7 @@ public class SdlRouterService extends Service{
/**
* <b> NOTE: DO NOT MODIFY THIS UNLESS YOU KNOW WHAT YOU'RE DOING.</b>
*/
- protected static final int ROUTER_SERVICE_VERSION_NUMBER = 10;
+ protected static final int ROUTER_SERVICE_VERSION_NUMBER = 11;
private static final String ROUTER_SERVICE_PROCESS = "com.smartdevicelink.router";
@@ -1443,8 +1444,9 @@ public class SdlRouterService extends Service{
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
builder.setContentIntent(pendingIntent);
- if(chronometerLength > 0 && android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ if(chronometerLength > (FOREGROUND_TIMEOUT/1000) && android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
//The countdown method is only available in SDKs >= 24
+ // Only add countdown if it is over the min timeout
builder.setWhen(chronometerLength + System.currentTimeMillis());
builder.setUsesChronometer(true);
builder.setChronometerCountDown(true);
@@ -1516,6 +1518,27 @@ public class SdlRouterService extends Service{
synchronized (NOTIFICATION_LOCK) {
if (isForeground && !isPrimaryTransportConnected()) { //Ensure that the service is in the foreground and no longer connected to a transport
this.stopForeground(true);
+ NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
+ if (notificationManager!= null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ try {
+ boolean notificationHasDisplayed = false;
+ StatusBarNotification[] notifications = notificationManager.getActiveNotifications();
+ for (StatusBarNotification notification : notifications) {
+ if(notification != null && FOREGROUND_SERVICE_ID == notification.getId()){
+ DebugTool.logInfo("Service notification is being displayed");
+ notificationHasDisplayed = true;
+ break;
+ }
+ }
+ if (notificationHasDisplayed) {
+ notificationManager.deleteNotificationChannel(SDL_NOTIFICATION_CHANNEL_ID);
+ }
+ //else leave the notification channel alone to avoid deleting it before the
+ //foreground service notification has a chance to be displayed.
+ } catch (Exception e){
+ DebugTool.logError("Issue when deleting notification channel", e);
+ }
+ }
isForeground = false;
}
}
diff --git a/android/sdl_android/src/main/res/values/sdl.xml b/android/sdl_android/src/main/res/values/sdl.xml
index 2b3a85a05..16553ad29 100644
--- a/android/sdl_android/src/main/res/values/sdl.xml
+++ b/android/sdl_android/src/main/res/values/sdl.xml
@@ -2,7 +2,7 @@
<resources>
<string name="sdl_router_service_version_name" translatable="false">sdl_router_version</string>
- <integer name="sdl_router_service_version_value">10</integer>
+ <integer name="sdl_router_service_version_value">11</integer>
<string name="sdl_router_service_is_custom_name" translatable="false">sdl_custom_router</string>
</resources>