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

Commit 291e928c authored by Xin Li's avatar Xin Li
Browse files

DO NOT MERGE - Merge build QP1A.190711.019 into stage-aosp-master

Bug: 139893257
Change-Id: Ie2e7c3987e819e0ec8eb58e8ee7ec62d5bbc587f
parents 79c1deac 24705070
Loading
Loading
Loading
Loading
+34 −30
Original line number Original line Diff line number Diff line
@@ -61,8 +61,7 @@ public class AssistantRoleBehavior implements RoleBehavior {
    @Override
    @Override
    public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
    public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
            @NonNull Context context) {
            @NonNull Context context) {
        return !UserUtils.isWorkProfile(user, context)
        return !UserUtils.isWorkProfile(user, context);
                && !context.getSystemService(ActivityManager.class).isLowRamDevice();
    }
    }


    @Nullable
    @Nullable
@@ -97,13 +96,15 @@ public class AssistantRoleBehavior implements RoleBehavior {
    public List<String> getQualifyingPackagesAsUser(@NonNull Role role, @NonNull UserHandle user,
    public List<String> getQualifyingPackagesAsUser(@NonNull Role role, @NonNull UserHandle user,
            @NonNull Context context) {
            @NonNull Context context) {
        Context userContext = UserUtils.getUserContext(context, user);
        Context userContext = UserUtils.getUserContext(context, user);
        ActivityManager userActivityManager = userContext.getSystemService(ActivityManager.class);
        PackageManager userPackageManager = userContext.getPackageManager();
        PackageManager userPackageManager = userContext.getPackageManager();
        Set<String> availableAssistants = new ArraySet<>();
        Set<String> availableAssistants = new ArraySet<>();


        List<ResolveInfo> services = userPackageManager.queryIntentServices(ASSIST_SERVICE_PROBE,
        if (!userActivityManager.isLowRamDevice()) {
                PackageManager.GET_META_DATA | PackageManager.MATCH_DIRECT_BOOT_AWARE
            List<ResolveInfo> services = userPackageManager.queryIntentServices(
                    ASSIST_SERVICE_PROBE, PackageManager.GET_META_DATA
                            | PackageManager.MATCH_DIRECT_BOOT_AWARE
                            | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
                            | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);

            int numServices = services.size();
            int numServices = services.size();
            for (int i = 0; i < numServices; i++) {
            for (int i = 0; i < numServices; i++) {
                ResolveInfo service = services.get(i);
                ResolveInfo service = services.get(i);
@@ -112,12 +113,12 @@ public class AssistantRoleBehavior implements RoleBehavior {
                    availableAssistants.add(service.serviceInfo.packageName);
                    availableAssistants.add(service.serviceInfo.packageName);
                }
                }
            }
            }
        }


        List<ResolveInfo> activities = userPackageManager.queryIntentActivities(
        List<ResolveInfo> activities = userPackageManager.queryIntentActivities(
                ASSIST_ACTIVITY_PROBE, PackageManager.MATCH_DEFAULT_ONLY
                ASSIST_ACTIVITY_PROBE, PackageManager.MATCH_DEFAULT_ONLY
                        | PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);

        int numActivities = activities.size();
        int numActivities = activities.size();
        for (int i = 0; i < numActivities; i++) {
        for (int i = 0; i < numActivities; i++) {
            availableAssistants.add(activities.get(i).activityInfo.packageName);
            availableAssistants.add(activities.get(i).activityInfo.packageName);
@@ -130,31 +131,34 @@ public class AssistantRoleBehavior implements RoleBehavior {
    @Override
    @Override
    public Boolean isPackageQualified(@NonNull Role role, @NonNull String packageName,
    public Boolean isPackageQualified(@NonNull Role role, @NonNull String packageName,
            @NonNull Context context) {
            @NonNull Context context) {
        PackageManager pm = context.getPackageManager();
        ActivityManager activityManager = context.getSystemService(ActivityManager.class);
        PackageManager packageManager = context.getPackageManager();


        boolean hasAssistantService = false;
        if (!activityManager.isLowRamDevice()) {
            Intent pkgServiceProbe = new Intent(ASSIST_SERVICE_PROBE).setPackage(packageName);
            Intent pkgServiceProbe = new Intent(ASSIST_SERVICE_PROBE).setPackage(packageName);
        List<ResolveInfo> services = pm.queryIntentServices(pkgServiceProbe,
            List<ResolveInfo> services = packageManager.queryIntentServices(pkgServiceProbe,
                    PackageManager.GET_META_DATA | PackageManager.MATCH_DIRECT_BOOT_AWARE
                    PackageManager.GET_META_DATA | PackageManager.MATCH_DIRECT_BOOT_AWARE
                            | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
                            | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);

            hasAssistantService = !services.isEmpty();
            int numServices = services.size();
            int numServices = services.size();
            for (int i = 0; i < numServices; i++) {
            for (int i = 0; i < numServices; i++) {
                ResolveInfo service = services.get(i);
                ResolveInfo service = services.get(i);


            if (isAssistantVoiceInteractionService(pm, service.serviceInfo)) {
                if (isAssistantVoiceInteractionService(packageManager, service.serviceInfo)) {
                    return true;
                    return true;
                }
                }
            }
            }
        }


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

        if (!hasAssistantActivity) {
        if (!hasAssistantActivity) {
            Log.w(LOG_TAG, "Package " + packageName + " not qualified for " + role.getName()
            Log.w(LOG_TAG, "Package " + packageName + " not qualified for " + role.getName()
                    + " due to " + (services.isEmpty() ? "missing service"
                    + " due to " + (hasAssistantService ? "unqualified" : "missing")
                    : "service without qualifying metadata") + " and missing activity");
                    + " service and missing activity");
        }
        }


        return hasAssistantActivity;
        return hasAssistantActivity;
+6 −2
Original line number Original line Diff line number Diff line
@@ -199,7 +199,9 @@ public class RequestRoleActivity extends FragmentActivity {
        mRoleName = RoleManager.ROLE_DIALER;
        mRoleName = RoleManager.ROLE_DIALER;
        mPackageName = null;
        mPackageName = null;


        String callingPackageName = getCallingPackage();
        // Intent.EXTRA_CALLING_PACKAGE is set in PermissionPolicyService.Internal
        // .isActionRemovedForCallingPackage() and can be trusted.
        String callingPackageName = intent.getStringExtra(Intent.EXTRA_CALLING_PACKAGE);
        String extraPackageName = intent.getStringExtra(
        String extraPackageName = intent.getStringExtra(
                TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME);
                TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME);
        if (Objects.equals(extraPackageName, callingPackageName)) {
        if (Objects.equals(extraPackageName, callingPackageName)) {
@@ -240,7 +242,9 @@ public class RequestRoleActivity extends FragmentActivity {
        mRoleName = RoleManager.ROLE_SMS;
        mRoleName = RoleManager.ROLE_SMS;
        mPackageName = null;
        mPackageName = null;


        String callingPackageName = getCallingPackage();
        // Intent.EXTRA_CALLING_PACKAGE is set in PermissionPolicyService.Internal
        // .isActionRemovedForCallingPackage() and can be trusted.
        String callingPackageName = intent.getStringExtra(Intent.EXTRA_CALLING_PACKAGE);
        String extraPackageName = intent.getStringExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME);
        String extraPackageName = intent.getStringExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME);
        if (extraPackageName == null) {
        if (extraPackageName == null) {
            // Launch the settings activity to show the list.
            // Launch the settings activity to show the list.