summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Bird <sbird@cyngn.com>2016-05-02 10:19:12 -0700
committerRichard MacGregor <rmacgregor@cyngn.com>2016-05-02 10:55:56 -0700
commitb5448ef00c5bc584391e41f14edd5d8a86249e24 (patch)
treeba596c1dc5ee3c64d4e9b516643726bea46cb65b
parent158e6b374aa5cc63cfa90720fdbb5cf45a7298bf (diff)
downloadpackages_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
-rw-r--r--src-ambient/com/android/phone/common/ambient/AmbientConnection.java45
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() {