summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHai Zhang <zhanghai@google.com>2019-07-15 12:27:35 -0700
committerHai Zhang <zhanghai@google.com>2019-07-15 23:08:02 +0000
commit2300b89008de4476b2e692daeade9a1729cb3077 (patch)
treefff794e055b3fde6f299d40e3ecf644fd0d1b43c
parente508f0032e3fb9313c395e9e5d776d832161cbea (diff)
downloadandroid_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.java64
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;