diff options
author | Hai Zhang <zhanghai@google.com> | 2019-07-15 12:27:35 -0700 |
---|---|---|
committer | Hai Zhang <zhanghai@google.com> | 2019-07-15 23:08:02 +0000 |
commit | 2300b89008de4476b2e692daeade9a1729cb3077 (patch) | |
tree | fff794e055b3fde6f299d40e3ecf644fd0d1b43c | |
parent | e508f0032e3fb9313c395e9e5d776d832161cbea (diff) | |
download | android_packages_apps_PackageInstaller-2300b89008de4476b2e692daeade9a1729cb3077.tar.gz android_packages_apps_PackageInstaller-2300b89008de4476b2e692daeade9a1729cb3077.tar.bz2 android_packages_apps_PackageInstaller-2300b89008de4476b2e692daeade9a1729cb3077.zip |
Fix assistant role availability on low ram devices.
The assistant role should be available on low ram devices, just that
only assistant activities but not assistant services can be qualified.
Fixes: 137388024
Test: presubmit & manual
Change-Id: Ie84fd163fb49c0514f51ba64ba89c225dceb2e5b
-rw-r--r-- | src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java index a950d93a..f79522ea 100644 --- a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java +++ b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java @@ -61,8 +61,7 @@ public class AssistantRoleBehavior implements RoleBehavior { @Override public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { - return !UserUtils.isWorkProfile(user, context) - && !context.getSystemService(ActivityManager.class).isLowRamDevice(); + return !UserUtils.isWorkProfile(user, context); } @Nullable @@ -97,19 +96,22 @@ public class AssistantRoleBehavior implements RoleBehavior { public List<String> getQualifyingPackagesAsUser(@NonNull Role role, @NonNull UserHandle user, @NonNull Context context) { Context userContext = UserUtils.getUserContext(context, user); + ActivityManager userActivityManager = userContext.getSystemService(ActivityManager.class); PackageManager userPackageManager = userContext.getPackageManager(); Set<String> availableAssistants = new ArraySet<>(); - List<ResolveInfo> services = userPackageManager.queryIntentServices(ASSIST_SERVICE_PROBE, - 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++) { - ResolveInfo service = services.get(i); - - if (isAssistantVoiceInteractionService(userPackageManager, service.serviceInfo)) { - availableAssistants.add(service.serviceInfo.packageName); + if (!userActivityManager.isLowRamDevice()) { + List<ResolveInfo> services = userPackageManager.queryIntentServices( + ASSIST_SERVICE_PROBE, 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++) { + ResolveInfo service = services.get(i); + + if (isAssistantVoiceInteractionService(userPackageManager, service.serviceInfo)) { + availableAssistants.add(service.serviceInfo.packageName); + } } } @@ -117,7 +119,6 @@ public class AssistantRoleBehavior implements RoleBehavior { ASSIST_ACTIVITY_PROBE, PackageManager.MATCH_DEFAULT_ONLY | PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE); - int numActivities = activities.size(); for (int i = 0; i < numActivities; i++) { availableAssistants.add(activities.get(i).activityInfo.packageName); @@ -130,31 +131,34 @@ public class AssistantRoleBehavior implements RoleBehavior { @Override public Boolean isPackageQualified(@NonNull Role role, @NonNull String packageName, @NonNull Context context) { - PackageManager pm = context.getPackageManager(); - - Intent pkgServiceProbe = new Intent(ASSIST_SERVICE_PROBE).setPackage(packageName); - List<ResolveInfo> services = pm.queryIntentServices(pkgServiceProbe, - 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++) { - ResolveInfo service = services.get(i); - - if (isAssistantVoiceInteractionService(pm, service.serviceInfo)) { - return true; + 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); + List<ResolveInfo> services = packageManager.queryIntentServices(pkgServiceProbe, + PackageManager.GET_META_DATA | PackageManager.MATCH_DIRECT_BOOT_AWARE + | PackageManager.MATCH_DIRECT_BOOT_UNAWARE); + hasAssistantService = !services.isEmpty(); + int numServices = services.size(); + for (int i = 0; i < numServices; i++) { + ResolveInfo service = services.get(i); + + if (isAssistantVoiceInteractionService(packageManager, service.serviceInfo)) { + return true; + } } } 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_DIRECT_BOOT_UNAWARE).isEmpty(); - if (!hasAssistantActivity) { Log.w(LOG_TAG, "Package " + packageName + " not qualified for " + role.getName() - + " due to " + (services.isEmpty() ? "missing service" - : "service without qualifying metadata") + " and missing activity"); + + " due to " + (hasAssistantService ? "unqualified" : "missing") + + " service and missing activity"); } return hasAssistantActivity; |