From 71dc5f62629e76544a16b9ee67d083548167991d Mon Sep 17 00:00:00 2001 From: RHeniz Date: Fri, 19 Nov 2021 16:08:42 -0500 Subject: Add PendingIntents to start services from RS --- .../main/java/com/smartdevicelink/transport/SdlRouterService.java | 7 +++++++ .../src/main/java/com/smartdevicelink/util/AndroidTools.java | 8 ++++++++ 2 files changed, 15 insertions(+) (limited to 'android/sdl_android/src/main') 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 fa4ba4054..ca585c445 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 @@ -1826,6 +1826,10 @@ public class SdlRouterService extends Service { startService.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + startService.putExtra(TransportConstants.PENDING_BOOLEAN_EXTRA, true); + } + AndroidTools.sendExplicitBroadcast(getApplicationContext(), startService, null); //HARDWARE_CONNECTED @@ -2902,6 +2906,9 @@ public class SdlRouterService extends Service { if (receivedVehicleType != null) { pingIntent.putExtra(TransportConstants.VEHICLE_INFO_EXTRA, receivedVehicleType.getStore()); } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + pingIntent.putExtra(TransportConstants.PENDING_BOOLEAN_EXTRA, true); + } } private void startClientPings() { diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/util/AndroidTools.java b/android/sdl_android/src/main/java/com/smartdevicelink/util/AndroidTools.java index 02ef5169d..0b9125352 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/util/AndroidTools.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/util/AndroidTools.java @@ -32,6 +32,7 @@ package com.smartdevicelink.util; +import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -249,6 +250,13 @@ public class AndroidTools { for (ResolveInfo app : apps) { try { intent.setClassName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && intent.getBooleanExtra(TransportConstants.PENDING_BOOLEAN_EXTRA, false)) { + Intent pending = new Intent(); + PendingIntent pendingIntent = PendingIntent.getForegroundService(context, (int) System.currentTimeMillis(), pending, PendingIntent.FLAG_MUTABLE | Intent.FILL_IN_COMPONENT); + intent.putExtra(TransportConstants.PENDING_INTENT_EXTRA, pendingIntent); + } + context.sendBroadcast(intent); } catch (Exception e) { //In case there is missing info in the app reference we want to keep moving -- cgit v1.2.1