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

Commit 29f55c66 authored by Hai Zhang's avatar Hai Zhang
Browse files

Match either direct boot aware or unaware when querying intent.

Otherwise we might consider some role holders to be unqualified during
early boot. This should resolve some issue for default assistant and
browser.

Bug: 124452117
Test: build
Change-Id: I0b1d908d7bf8885443a2fb5b68b5479c85398e4f
parent 35c8b8d9
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -100,7 +100,8 @@ public class AssistantRoleBehavior implements RoleBehavior {
        Set<String> availableAssistants = new ArraySet<>();

        List<ResolveInfo> services = pm.queryIntentServicesAsUser(ASSIST_SERVICE_PROBE,
                PackageManager.GET_META_DATA, user);
                PackageManager.GET_META_DATA | PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, user);

        int numServices = services.size();
        for (int i = 0; i < numServices; i++) {
@@ -112,7 +113,8 @@ public class AssistantRoleBehavior implements RoleBehavior {
        }

        List<ResolveInfo> activities = pm.queryIntentActivitiesAsUser(ASSIST_ACTIVITY_PROBE,
                PackageManager.MATCH_DEFAULT_ONLY, user);
                PackageManager.MATCH_DEFAULT_ONLY | PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, user);

        int numActivities = activities.size();
        for (int i = 0; i < numActivities; i++) {
@@ -130,7 +132,8 @@ public class AssistantRoleBehavior implements RoleBehavior {

        Intent pkgServiceProbe = new Intent(ASSIST_SERVICE_PROBE).setPackage(packageName);
        List<ResolveInfo> services = pm.queryIntentServices(pkgServiceProbe,
                PackageManager.GET_META_DATA);
                PackageManager.GET_META_DATA | PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);

        int numServices = services.size();
        for (int i = 0; i < numServices; i++) {
@@ -143,7 +146,8 @@ public class AssistantRoleBehavior implements RoleBehavior {

        Intent pkgActivityProbe = new Intent(ASSIST_ACTIVITY_PROBE).setPackage(packageName);
        boolean hasAssistantActivity = !pm.queryIntentActivities(pkgActivityProbe,
                PackageManager.MATCH_DEFAULT_ONLY).isEmpty();
                PackageManager.MATCH_DEFAULT_ONLY | PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE).isEmpty();

        if (!hasAssistantActivity) {
            Log.w(LOG_TAG, "Package " + packageName + " not qualified for " + role.getName()
+3 −1
Original line number Diff line number Diff line
@@ -93,7 +93,9 @@ public class BrowserRoleBehavior implements RoleBehavior {
                    .setPackage(packageName);
        }
        List<ResolveInfo> resolveInfos = packageManager.queryIntentActivitiesAsUser(intent,
                PackageManager.MATCH_ALL, user);
                // To one's surprise, MATCH_ALL doesn't include MATCH_DIRECT_BOOT_*.
                PackageManager.MATCH_ALL | PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, user);
        ArraySet<String> packageNames = new ArraySet<>();
        int resolveInfosSize = resolveInfos.size();
        for (int i = 0; i < resolveInfosSize; i++) {