summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2017-02-09 17:01:16 -0500
committerGitHub <noreply@github.com>2017-02-09 17:01:16 -0500
commit7159d5b50b8c9435f6bb83e9a5b509862f1e5cc6 (patch)
treeadb6716e967b6679a7f40997f6bda9654eab91fc
parent90126711cd5c1a382af5a029a1eed172a1c22b42 (diff)
parent555d0a705f5e33093f973fd71fd459afbed3551b (diff)
downloadsdl_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.java26
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