diff options
Diffstat (limited to 'android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java')
-rw-r--r-- | android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java b/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java index 8e904a45f..371bc4e09 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/util/IntegrationValidator.java @@ -33,12 +33,14 @@ package com.smartdevicelink.util; import android.Manifest; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.content.pm.ServiceInfo; import android.os.Build; import com.smartdevicelink.R; @@ -198,6 +200,20 @@ public class IntegrationValidator { boolean serviceFilterHasAction = false; String className = localRouterClass.getName(); + + boolean areBtPermissionsEnabled = true; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + areBtPermissionsEnabled = false; + try { + ComponentName cn = new ComponentName(context.getPackageName(), className); + PackageManager pm = context.getPackageManager(); + ServiceInfo serviceInfo = pm.getServiceInfo(cn, 0); + areBtPermissionsEnabled = AndroidTools.areBtPermissionsGranted(context, serviceInfo.packageName); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + } + List<SdlAppInfo> services = AndroidTools.querySdlAppInfo(context, null, null); for (SdlAppInfo sdlAppInfo : services) { if (sdlAppInfo != null && sdlAppInfo.getRouterServiceComponentName() != null @@ -206,7 +222,11 @@ public class IntegrationValidator { break; } } - if (!serviceFilterHasAction) { + + if (!serviceFilterHasAction && !areBtPermissionsEnabled) { + retVal.successful = true; + retVal.resultText = "intent-filter not found for SdlRouterService because BT Permissions are disabled"; + } else if (!serviceFilterHasAction && areBtPermissionsEnabled) { retVal.successful = false; retVal.resultText = "This application has not specified its intent-filter for the SdlRouterService."; } |