diff options
| author | 2020-03-27 01:33:38 +0000 | |
|---|---|---|
| committer | 2020-03-27 01:33:38 +0000 | |
| commit | 22a0b13e5df3a21ea8d6e16f15ff316e1449bfde (patch) | |
| tree | de8024577a5f48c2e0f48b3db096f95adb30e806 | |
| parent | e71b44a8e504313256d677047dc7fc581257b76e (diff) | |
| parent | ee74b0ea906db7447fd33355351c625dd782139c (diff) | |
Merge "Fix the duplicate components in edit shortcut menu list." into rvc-dev
| -rw-r--r-- | core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java b/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java index c40864131a2e..51b13345a6c3 100644 --- a/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java +++ b/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java @@ -169,13 +169,41 @@ public class AccessibilityButtonChooserActivity extends Activity { private static List<AccessibilityButtonTarget> getInstalledServiceTargets( @NonNull Context context) { final List<AccessibilityButtonTarget> targets = new ArrayList<>(); - targets.addAll(getAccessibilityServiceTargets(context)); - targets.addAll(getAccessibilityActivityTargets(context)); + targets.addAll(getAccessibilityFilteredTargets(context)); targets.addAll(getWhiteListingServiceTargets(context)); return targets; } + private static List<AccessibilityButtonTarget> getAccessibilityFilteredTargets( + @NonNull Context context) { + final List<AccessibilityButtonTarget> serviceTargets = + getAccessibilityServiceTargets(context); + final List<AccessibilityButtonTarget> activityTargets = + getAccessibilityActivityTargets(context); + + for (AccessibilityButtonTarget activityTarget : activityTargets) { + serviceTargets.removeIf(serviceTarget -> { + final ComponentName serviceComponentName = + ComponentName.unflattenFromString(serviceTarget.getId()); + final ComponentName activityComponentName = + ComponentName.unflattenFromString(activityTarget.getId()); + final boolean isSamePackageName = activityComponentName.getPackageName().equals( + serviceComponentName.getPackageName()); + final boolean isSameLabel = activityTarget.getLabel().equals( + serviceTarget.getLabel()); + + return isSamePackageName && isSameLabel; + }); + } + + final List<AccessibilityButtonTarget> targets = new ArrayList<>(); + targets.addAll(serviceTargets); + targets.addAll(activityTargets); + + return targets; + } + private static List<AccessibilityButtonTarget> getAccessibilityServiceTargets( @NonNull Context context) { final AccessibilityManager ams = context.getSystemService(AccessibilityManager.class); |