diff options
author | Stephen Bird <sbird@cyngn.com> | 2016-05-02 10:19:12 -0700 |
---|---|---|
committer | Richard MacGregor <rmacgregor@cyngn.com> | 2016-05-02 10:55:56 -0700 |
commit | b5448ef00c5bc584391e41f14edd5d8a86249e24 (patch) | |
tree | ba596c1dc5ee3c64d4e9b516643726bea46cb65b /src-ambient/com/android/phone/common/ambient/AmbientConnection.java | |
parent | 158e6b374aa5cc63cfa90720fdbb5cf45a7298bf (diff) | |
download | packages_apps_PhoneCommon-b5448ef00c5bc584391e41f14edd5d8a86249e24.tar.gz packages_apps_PhoneCommon-b5448ef00c5bc584391e41f14edd5d8a86249e24.tar.bz2 packages_apps_PhoneCommon-b5448ef00c5bc584391e41f14edd5d8a86249e24.zip |
AmbientConnection: Permissions checking
Make sure we have permissions to do what we do.
Ticket CD-608
Change-Id: I563c24564700ea72a2e568f5ef2f4d1c5df833df
Diffstat (limited to 'src-ambient/com/android/phone/common/ambient/AmbientConnection.java')
-rw-r--r-- | src-ambient/com/android/phone/common/ambient/AmbientConnection.java | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/src-ambient/com/android/phone/common/ambient/AmbientConnection.java b/src-ambient/com/android/phone/common/ambient/AmbientConnection.java index 974665e..2aa6647 100644 --- a/src-ambient/com/android/phone/common/ambient/AmbientConnection.java +++ b/src-ambient/com/android/phone/common/ambient/AmbientConnection.java @@ -1,6 +1,7 @@ package com.android.phone.common.ambient; import android.content.Context; +import android.content.pm.PackageManager; import android.os.Bundle; import android.util.Log; @@ -18,20 +19,48 @@ import com.cyanogen.ambient.incall.InCallServices; */ public class AmbientConnection { + private static boolean checkPermissionsGranted(Context context, String permission) { + int status = context.checkCallingOrSelfPermission(permission); + return status == PackageManager.PERMISSION_GRANTED; + } + + private static final String INCALL_PERMISSION + = "com.cyanogen.ambient.permission.BIND_INCALL_SERVICE"; + + private static final String PUBLISH_DISCOVERY_NUDGE + = "com.cyanogen.ambient.permission.PUBLISH_DISCOVERY_NUDGE"; + + private static final String DEEPLINK_SERVICE_PERMISSION + = "com.cyanogen.ambient.permission.BIND_DEEPLINK_SERVICE"; + + private static final String DEEPLINK_DATABASE_PERMISSION + = "com.cyanogen.ambient.permission.READ_DEEPLINK_DATABASE"; + public static final SingletonHolder<AmbientApiClient, Context> CLIENT = new SingletonHolder<AmbientApiClient, Context>() { private static final String TAG = "PhoneCommon.AmbientSingletonHolder"; @Override protected AmbientApiClient create(Context context) { - AmbientApiClient client = new AmbientApiClient.Builder(context) - .addApi(AnalyticsServices.API) - .addApi(InCallServices.API) - .addApi(CallerInfoServices.API) - .addApi(NudgeServices.API) - .addApi(DiscoveryManagerServices.API) - .addApi(DeepLinkServices.API) - .build(); + AmbientApiClient.Builder builder = new AmbientApiClient.Builder(context); + builder.addApi(AnalyticsServices.API); + builder.addApi(CallerInfoServices.API); + + if (checkPermissionsGranted(context, INCALL_PERMISSION)) { + builder.addApi(InCallServices.API); + } + + if (checkPermissionsGranted(context, PUBLISH_DISCOVERY_NUDGE)) { + builder.addApi(NudgeServices.API); + builder.addApi(DiscoveryManagerServices.API); + } + + if (checkPermissionsGranted(context, DEEPLINK_SERVICE_PERMISSION) && + checkPermissionsGranted(context, DEEPLINK_DATABASE_PERMISSION)) { + builder.addApi(DeepLinkServices.API); + } + + AmbientApiClient client = builder.build(); client.registerConnectionFailedListener( new AmbientApiClient.OnConnectionFailedListener() { |