From c46098b2430b73f46e36ce58c13f3984bf406443 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Fri, 1 Jul 2016 18:19:00 -0700 Subject: Grant location permission to camera app. Change-Id: I9c73a0232e9fdc7043321b35a2721603dced8789 Fixes: 29911953 --- .../server/retaildemo/RetailDemoModeService.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java b/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java index a4d401318793..a812cee746f0 100644 --- a/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java +++ b/services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java @@ -16,6 +16,7 @@ package com.android.server.retaildemo; +import android.Manifest; import android.app.ActivityManagerInternal; import android.app.ActivityManagerNative; import android.app.AppGlobals; @@ -32,6 +33,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.content.res.Configuration; import android.database.ContentObserver; @@ -51,6 +53,7 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; +import android.provider.MediaStore; import android.provider.Settings; import android.util.Slog; import com.android.internal.os.BackgroundThread; @@ -250,6 +253,26 @@ public class RetailDemoModeService extends SystemService { um.setUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS, true, user); Settings.Secure.putIntForUser(getContext().getContentResolver(), Settings.Secure.SKIP_FIRST_USE_HINTS, 1, userInfo.id); + + grantRuntimePermissionToCamera(userInfo.getUserHandle()); + } + + private void grantRuntimePermissionToCamera(UserHandle user) { + final Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + final PackageManager pm = getContext().getPackageManager(); + final ResolveInfo handler = pm.resolveActivityAsUser(cameraIntent, + PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, + user.getIdentifier()); + if (handler == null || handler.activityInfo == null) { + return; + } + try { + pm.grantRuntimePermission(handler.activityInfo.packageName, + Manifest.permission.ACCESS_FINE_LOCATION, user); + } catch (Exception e) { + // Ignore + } + } void logSessionDuration() { -- cgit v1.2.3-59-g8ed1b