diff options
| author | 2015-06-25 00:08:52 +0000 | |
|---|---|---|
| committer | 2015-06-25 00:08:54 +0000 | |
| commit | 91feb107f2c7b51bf3cbdef43bea2fb61b56a8ee (patch) | |
| tree | 42f51822c6b2edf69ef1c977ccd36b9e09351ba2 | |
| parent | 93666e8691c9b41855add5c1c92bfc9e0912764e (diff) | |
| parent | c412be6824900d5e9d6f44fa9aa3015f0d5b517b (diff) | |
Merge "Fix ChooserActivity check for still-alive ChooserTargets" into mnc-dev
| -rw-r--r-- | core/java/com/android/internal/app/ResolverActivity.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index fe3ab9e49743..e5ff51c4822b 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -74,6 +74,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Objects; import java.util.Set; import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR; @@ -867,6 +868,16 @@ public class ResolverActivity extends Activity { } } + /** + * Check a simple match for the component of two ResolveInfos. + */ + static boolean resolveInfoMatch(ResolveInfo lhs, ResolveInfo rhs) { + return lhs == null ? rhs == null + : lhs.activityInfo == null ? rhs.activityInfo == null + : Objects.equals(lhs.activityInfo.name, rhs.activityInfo.name) + && Objects.equals(lhs.activityInfo.packageName, rhs.activityInfo.packageName); + } + final class DisplayResolveInfo implements TargetInfo { private final ResolveInfo mResolveInfo; private final CharSequence mDisplayLabel; @@ -1462,7 +1473,7 @@ public class ResolverActivity extends Activity { public boolean hasResolvedTarget(ResolveInfo info) { for (int i = 0, N = mDisplayList.size(); i < N; i++) { - if (info.equals(mDisplayList.get(i).getResolveInfo())) { + if (resolveInfoMatch(info, mDisplayList.get(i).getResolveInfo())) { return true; } } |