summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Svetoslav Ganov <svetoslavganov@google.com> 2016-03-01 01:40:36 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-03-01 01:40:37 +0000
commita0021cbb7fe9b1f97c0a31bd0681eb6c0f7f34a9 (patch)
treec96fd746c3c1992f6936f7179cdb4289d986ce37
parent88d5592ff2f27806fa28fe4b5ceadd1e1fb860f6 (diff)
parent80d78dc92bed0873d03e357e025f994af1217577 (diff)
Merge "Proper grant default permissions to default SMS and Phone" into nyc-dev
-rw-r--r--services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java12
1 files changed, 9 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 9a5a183233e2..d6b59f9ab35a 100644
--- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
+++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
@@ -788,7 +788,7 @@ final class DefaultPermissionGrantPolicy {
}
private void grantRuntimePermissionsLPw(PackageParser.Package pkg, Set<String> permissions,
- boolean systemFixed, boolean overrideUserChoice, int userId) {
+ boolean systemFixed, boolean isDefaultPhoneOrSms, int userId) {
if (pkg.requestedPermissions.isEmpty()) {
return;
}
@@ -796,7 +796,13 @@ final class DefaultPermissionGrantPolicy {
List<String> requestedPermissions = pkg.requestedPermissions;
Set<String> grantablePermissions = null;
- if (pkg.isUpdatedSystemApp()) {
+ // If this is the default Phone or SMS app we grant permissions regardless
+ // whether the version on the system image declares the permission as used since
+ // selecting the app as the default Phone or SMS the user makes a deliberate
+ // choice to grant this app the permissions needed to function. For all other
+ // apps, (default grants on first boot and user creation) we don't grant default
+ // permissions if the version on the system image does not declare them.
+ if (!isDefaultPhoneOrSms && pkg.isUpdatedSystemApp()) {
PackageSetting sysPs = mService.mSettings.getDisabledSystemPkgLPr(pkg.packageName);
if (sysPs != null) {
if (sysPs.pkg.requestedPermissions.isEmpty()) {
@@ -828,7 +834,7 @@ final class DefaultPermissionGrantPolicy {
// Unless the caller wants to override user choices. The override is
// to make sure we can grant the needed permission to the default
// sms and phone apps after the user chooses this in the UI.
- if (flags == 0 || overrideUserChoice) {
+ if (flags == 0 || isDefaultPhoneOrSms) {
// Never clobber policy or system.
final int fixedFlags = PackageManager.FLAG_PERMISSION_SYSTEM_FIXED
| PackageManager.FLAG_PERMISSION_POLICY_FIXED;