diff options
author | Xin Li <delphij@google.com> | 2019-08-23 06:45:16 +0000 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2019-08-23 06:45:16 +0000 |
commit | 291e928cbca6a3cd0684663756137e7fe452473e (patch) | |
tree | 2be8dbeb90c379434ca6e1184e23ce10d1315329 | |
parent | 79c1deac57fa16228ed7238fe1483277cb243122 (diff) | |
parent | 24705070d6210f5dc08bc5e73f8e181215221eb9 (diff) | |
download | PackageInstaller-291e928cbca6a3cd0684663756137e7fe452473e.tar.gz |
DO NOT MERGE - Merge build QP1A.190711.019 into stage-aosp-mastertemp_140451723
Bug: 139893257
Change-Id: Ie2e7c3987e819e0ec8eb58e8ee7ec62d5bbc587f
-rw-r--r-- | src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java | 64 | ||||
-rw-r--r-- | src/com/android/packageinstaller/role/ui/RequestRoleActivity.java | 8 |
2 files changed, 40 insertions, 32 deletions
diff --git a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java index a950d93ae..f79522ea8 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; diff --git a/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java b/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java index 8b56a221b..c57dfef2d 100644 --- a/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java +++ b/src/com/android/packageinstaller/role/ui/RequestRoleActivity.java @@ -199,7 +199,9 @@ public class RequestRoleActivity extends FragmentActivity { mRoleName = RoleManager.ROLE_DIALER; 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( TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME); if (Objects.equals(extraPackageName, callingPackageName)) { @@ -240,7 +242,9 @@ public class RequestRoleActivity extends FragmentActivity { mRoleName = RoleManager.ROLE_SMS; 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); if (extraPackageName == null) { // Launch the settings activity to show the list. |