diff options
| -rw-r--r-- | core/java/android/permission/PermissionManager.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 7 |
2 files changed, 7 insertions, 3 deletions
diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java index 2a41c2065c46..e15659db90a8 100644 --- a/core/java/android/permission/PermissionManager.java +++ b/core/java/android/permission/PermissionManager.java @@ -68,7 +68,8 @@ public final class PermissionManager { /** * Gets the version of the runtime permission database. * - * @return The database version. + * @return The database version, -1 when this is an upgrade from pre-Q, 0 when this is a fresh + * install. * * @hide */ diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 3f00d328090d..11a8f4b895f5 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -5102,6 +5102,7 @@ public final class Settings { private static final long WRITE_PERMISSIONS_DELAY_MILLIS = 200; private static final long MAX_WRITE_PERMISSIONS_DELAY_MILLIS = 2000; + private static final int UPGRADE_VERSION = -1; private static final int INITIAL_VERSION = 0; private final Handler mHandler = new MyHandler(); @@ -5133,7 +5134,7 @@ public final class Settings { @GuardedBy("Settings.this.mLock") int getVersionLPr(int userId) { - return mVersions.get(userId); + return mVersions.get(userId, INITIAL_VERSION); } @GuardedBy("Settings.this.mLock") @@ -5365,8 +5366,10 @@ public final class Settings { switch (parser.getName()) { case TAG_RUNTIME_PERMISSIONS: { + // If the permisions settings file exists but the version is not set this is + // an upgrade from P->Q. Hence mark it with the special UPGRADE_VERSION int version = XmlUtils.readIntAttribute(parser, ATTR_VERSION, - INITIAL_VERSION); + UPGRADE_VERSION); mVersions.put(userId, version); String fingerprint = parser.getAttributeValue(null, ATTR_FINGERPRINT); mFingerprints.put(userId, fingerprint); |