diff options
author | Joey Grover <joeygrover@gmail.com> | 2017-02-09 17:01:16 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-09 17:01:16 -0500 |
commit | 7159d5b50b8c9435f6bb83e9a5b509862f1e5cc6 (patch) | |
tree | adb6716e967b6679a7f40997f6bda9654eab91fc | |
parent | 90126711cd5c1a382af5a029a1eed172a1c22b42 (diff) | |
parent | 555d0a705f5e33093f973fd71fd459afbed3551b (diff) | |
download | sdl_android-7159d5b50b8c9435f6bb83e9a5b509862f1e5cc6.tar.gz |
Merge pull request #409 from smartdevicelink/bugfix/issue_392
Scope pinging router into a method that protects against rare security exception
-rw-r--r-- | sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java b/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java index 17bb3fd54..d398caaab 100644 --- a/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java +++ b/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java @@ -200,10 +200,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ runningBluetoothServicePackage.add(service.service); //Store which instance is running if(pingService){ - Intent intent = new Intent(); - intent.setClassName(service.service.getPackageName(), service.service.getClassName()); - intent.putExtra(TransportConstants.PING_ROUTER_SERVICE_EXTRA, pingService); - context.startService(intent); + pingRouterService(context, service.service.getPackageName(), service.service.getClassName()); } } } @@ -213,6 +210,27 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{ } /** + * Attempts to ping a running router service + * @param context A context to access Android system services through. + * @param packageName Package name for service to ping + * @param className Class name for service to ping + */ + protected static void pingRouterService(Context context, String packageName, String className){ + if(context == null || packageName == null || className == null){ + return; + } + try{ + Intent intent = new Intent(); + intent.setClassName(packageName, className); + intent.putExtra(TransportConstants.PING_ROUTER_SERVICE_EXTRA, true); + context.startService(intent); + }catch(SecurityException e){ + Log.e(TAG, "Security exception, process is bad"); + // This service could not be started + } + } + + /** * This call will reach out to all SDL related router services to check if they're connected. If a the router service is connected, it will react by pinging all clients. This receiver will then * receive that ping and if the router service is trusted, the onSdlEnabled method will be called. * @param context |