From f8d60b19ce8bd61167a707e9e50621d5f61f2801 Mon Sep 17 00:00:00 2001 From: Dan Aminzade Date: Tue, 13 Sep 2016 10:50:09 -0700 Subject: [PATCH] Automatically grant location and body sensors permissions to system packages that handle the com.android.fitness.TRACK intent. BUG: 31432884 Change-Id: I57ff470fe31ca6a3e824152b7b7eafd9759e3118 --- .../server/pm/DefaultPermissionGrantPolicy.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java index 33c297d2c9077..5016ec0d4be0d 100644 --- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java @@ -152,6 +152,7 @@ final class DefaultPermissionGrantPolicy { private static final String ACTION_TWINNING = "com.google.android.clockwork.intent.TWINNING_SETTINGS"; + private static final String ACTION_TRACK = "com.android.fitness.TRACK"; private final PackageManagerService mService; private final Handler mHandler; @@ -606,9 +607,9 @@ final class DefaultPermissionGrantPolicy { grantRuntimePermissionsLPw(musicPackage, STORAGE_PERMISSIONS, userId); } - // Android Wear + // Watches if (mService.hasSystemFeature(PackageManager.FEATURE_WATCH, 0)) { - // Android Wear Home + // Home application on watches Intent homeIntent = new Intent(Intent.ACTION_MAIN); homeIntent.addCategory(Intent.CATEGORY_HOME_MAIN); @@ -626,7 +627,7 @@ final class DefaultPermissionGrantPolicy { userId); } - // Android Wear Twinning + // Twinning on watches Intent twinningIntent = new Intent(ACTION_TWINNING); PackageParser.Package twinningPackage = getDefaultSystemHandlerActivityPackageLPr( twinningIntent, userId); @@ -636,6 +637,16 @@ final class DefaultPermissionGrantPolicy { grantRuntimePermissionsLPw(twinningPackage, PHONE_PERMISSIONS, false, userId); grantRuntimePermissionsLPw(twinningPackage, SMS_PERMISSIONS, false, userId); } + + // Fitness tracking on watches + Intent trackIntent = new Intent(ACTION_TRACK); + PackageParser.Package trackPackage = getDefaultSystemHandlerActivityPackageLPr( + trackIntent, userId); + if (trackPackage != null + && doesPackageSupportRuntimePermissions(trackPackage)) { + grantRuntimePermissionsLPw(trackPackage, SENSORS_PERMISSIONS, false, userId); + grantRuntimePermissionsLPw(trackPackage, LOCATION_PERMISSIONS, false, userId); + } } // Print Spooler