diff options
author | Hai Zhang <zhanghai@google.com> | 2019-07-16 11:04:52 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-07-16 11:04:52 -0700 |
commit | 7bb22d54dd254e13506d116fecaecfa878126678 (patch) | |
tree | 7aa558d857177a70eafcdf30c9da314d306c971a | |
parent | 3ad8d4a4baf43baedf99d25346739e272ec04dda (diff) | |
parent | 2300b89008de4476b2e692daeade9a1729cb3077 (diff) | |
download | android_packages_apps_PackageInstaller-7bb22d54dd254e13506d116fecaecfa878126678.tar.gz android_packages_apps_PackageInstaller-7bb22d54dd254e13506d116fecaecfa878126678.tar.bz2 android_packages_apps_PackageInstaller-7bb22d54dd254e13506d116fecaecfa878126678.zip |
Fix assistant role availability on low ram devices.
am: 2300b89008
Change-Id: I9c848ede27ffdb4be77d36d289205d28aaf03c1c
-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; |