diff options
author | Suprabh Shukla <suprabh@google.com> | 2017-09-20 16:51:06 -0700 |
---|---|---|
committer | Suprabh Shukla <suprabh@google.com> | 2017-09-21 20:52:43 +0000 |
commit | 691692d48669ef6d13193d449ea59e2e244c847f (patch) | |
tree | 9766e25f6b485ffc2345fac0915e2bc6d0cb7fb6 | |
parent | 51712e3bfc2a6e2df744791bf0d7803e0473c7dc (diff) | |
download | android_packages_apps_PackageInstaller-691692d48669ef6d13193d449ea59e2e244c847f.tar.gz android_packages_apps_PackageInstaller-691692d48669ef6d13193d449ea59e2e244c847f.tar.bz2 android_packages_apps_PackageInstaller-691692d48669ef6d13193d449ea59e2e244c847f.zip |
Not using app op code constant directly from PackageInstaller
Since AppOpsManager op codes are hidden apis, they can be modified by
OEMs. Referencing the codes directly prohibits partners from freely
using the integer ids to assign to their own op codes. Using a string
identifier to indirectly infer the integer code is more flexible.
Test: Builds, boots, existing tests pass
Bug: 65534401
Change-Id: I5a69690871b5b55f2f8d45d0cf53b5f25ff5abff
-rw-r--r-- | src/com/android/packageinstaller/PackageInstallerActivity.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/com/android/packageinstaller/PackageInstallerActivity.java b/src/com/android/packageinstaller/PackageInstallerActivity.java index 61154716..06444179 100644 --- a/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -519,7 +519,10 @@ public class PackageInstallerActivity extends OverlayTouchActivity implements On showDialogInner(DLG_ANONYMOUS_SOURCE); return; } - int appOpMode = mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES, + // Shouldn't use static constant directly, see b/65534401. + final int appOpCode = + AppOpsManager.permissionToOpCode(Manifest.permission.REQUEST_INSTALL_PACKAGES); + final int appOpMode = mAppOpsManager.checkOpNoThrow(appOpCode, mOriginatingUid, mOriginatingPackage); switch (appOpMode) { case AppOpsManager.MODE_DEFAULT: @@ -533,7 +536,7 @@ public class PackageInstallerActivity extends OverlayTouchActivity implements On } catch (RemoteException exc) { Log.e(TAG, "Unable to talk to package manager"); } - mAppOpsManager.setMode(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES, mOriginatingUid, + mAppOpsManager.setMode(appOpCode, mOriginatingUid, mOriginatingPackage, AppOpsManager.MODE_ERRORED); // fall through case AppOpsManager.MODE_ERRORED: |