diff options
| author | 2016-07-01 18:19:00 -0700 | |
|---|---|---|
| committer | 2016-07-01 18:19:00 -0700 | |
| commit | c46098b2430b73f46e36ce58c13f3984bf406443 (patch) | |
| tree | e8a796a084d383e94c205bc4b72ca3bdbe4bdf55 | |
| parent | 5fa47ee311184ead10aade1baaed2821006f8297 (diff) | |
Grant location permission to camera app.
Change-Id: I9c73a0232e9fdc7043321b35a2721603dced8789
Fixes: 29911953
| -rw-r--r-- | services/retaildemo/java/com/android/server/retaildemo/RetailDemoModeService.java | 23 |
1 files changed, 23 insertions, 0 deletions
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() { |