Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aac719da authored by Flavio Lerda's avatar Flavio Lerda
Browse files

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
parent 0b3eafe0
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -298,16 +298,6 @@ public class WearPackageInstallerService extends Service {
                }
            }

            // 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 @@ public class WearPackageInstallerService extends Service {
                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,