Check for permissions after checking for features.
This changelist moves around the check for permissions and features,
so that apps that do not have the right features, do not trigger a
permission granting notification.
Such apps are, for example, MotoConnect and other device-specific
apps, that are synced to all devices but should not be installed on
devices that do not match.
At the moment, these show a permission but installation will fail
silently later on.
Bug: 30582992
Change-Id: Ia75591d90f2c056378e256f98fe7db61ede4c7b2
diff --git a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
index 2d4744c..443aa89 100644
--- a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
+++ b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java
@@ -298,16 +298,6 @@
}
}
- // Check permissions on both the new wearable package and also on the already installed
- // wearable package.
- // If the app is targeting API level 23, we will also start a service in ClockworkHome
- // which will ultimately prompt the user to accept/reject permissions.
- if (checkPerms && !checkPermissions(pkg, companionSdkVersion, companionDeviceVersion,
- permUri, wearablePerms, tempFile)) {
- Log.w(TAG, "Wearable does not have enough permissions.");
- return;
- }
-
// Check that the wearable has all the features.
boolean hasAllFeatures = true;
if (pkg.reqFeatures != null) {
@@ -325,6 +315,16 @@
return;
}
+ // Check permissions on both the new wearable package and also on the already installed
+ // wearable package.
+ // If the app is targeting API level 23, we will also start a service in ClockworkHome
+ // which will ultimately prompt the user to accept/reject permissions.
+ if (checkPerms && !checkPermissions(pkg, companionSdkVersion, companionDeviceVersion,
+ permUri, wearablePerms, tempFile)) {
+ Log.w(TAG, "Wearable does not have enough permissions.");
+ return;
+ }
+
// Finally install the package.
ParcelFileDescriptor fd = getContentResolver().openFileDescriptor(assetUri, "r");
PackageInstallerFactory.getPackageInstaller(this).install(packageName, fd,