diff options
| author | 2019-07-02 16:21:07 +0000 | |
|---|---|---|
| committer | 2019-07-02 16:21:07 +0000 | |
| commit | ac1c8ddcc3cc7256217c9ec7ccd6e86c9ce7f79d (patch) | |
| tree | 6d9d697e27c5194421bb7e15596834e1e1bcc2c0 | |
| parent | 380626cf5482e0c27ffa5ad23a2a6aad483afe9a (diff) | |
| parent | bdbeea28d256600095dc158be71baa545e8edb95 (diff) | |
Merge "Sharesheet - Fix regression in direct share sorting" into qt-dev
| -rw-r--r-- | core/java/com/android/internal/app/ChooserActivity.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index f9d27bb46592..00206fc38d1d 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -1534,7 +1534,11 @@ public class ChooserActivity extends ResolverActivity { if (driList.get(i).getResolvedComponentName().equals( resultList.get(j).getTargetComponent())) { ShortcutManager.ShareShortcutInfo shareShortcutInfo = resultList.get(j); - ChooserTarget chooserTarget = convertToChooserTarget(shareShortcutInfo); + // Incoming results are ordered but without a score. Create a score + // based on the index in order to be sorted appropriately when joined + // with legacy direct share api results. + float score = Math.max(1.0f - (0.05f * j), 0.0f); + ChooserTarget chooserTarget = convertToChooserTarget(shareShortcutInfo, score); chooserTargets.add(chooserTarget); if (mDirectShareAppTargetCache != null && appTargets != null) { mDirectShareAppTargetCache.put(chooserTarget, appTargets.get(j)); @@ -1580,7 +1584,8 @@ public class ChooserActivity extends ResolverActivity { return false; } - private ChooserTarget convertToChooserTarget(ShortcutManager.ShareShortcutInfo shareShortcut) { + private ChooserTarget convertToChooserTarget(ShortcutManager.ShareShortcutInfo shareShortcut, + float score) { ShortcutInfo shortcutInfo = shareShortcut.getShortcutInfo(); Bundle extras = new Bundle(); extras.putString(Intent.EXTRA_SHORTCUT_ID, shortcutInfo.getId()); @@ -1591,7 +1596,7 @@ public class ChooserActivity extends ResolverActivity { null, // The ranking score for this target (0.0-1.0); the system will omit items with low // scores when there are too many Direct Share items. - 1.0f, + score, // The name of the component to be launched if this target is chosen. shareShortcut.getTargetComponent().clone(), // The extra values here will be merged into the Intent when this target is chosen. |