Fix some additional launcher shortcut issues

This commit is contained in:
Cameron Gutman 2016-11-06 00:43:18 -07:00
parent 92f8425ace
commit f0e85c4c53
2 changed files with 24 additions and 6 deletions

View File

@ -357,6 +357,9 @@ public class PcView extends Activity implements AdapterFragmentCallbacks {
// Invalidate reachability information after pairing to force // Invalidate reachability information after pairing to force
// a refresh before reading pair state again // a refresh before reading pair state again
managerBinder.invalidateStateForComputer(computer.uuid); managerBinder.invalidateStateForComputer(computer.uuid);
// Add a launcher shortcut for this PC
shortcutHelper.createAppViewShortcut(computer.uuid.toString(), computer);
} }
else { else {
// Should be no other values // Should be no other values
@ -505,8 +508,6 @@ public class PcView extends Activity implements AdapterFragmentCallbacks {
return; return;
} }
shortcutHelper.createAppViewShortcut(computer.uuid.toString(), computer);
Intent i = new Intent(this, AppView.class); Intent i = new Intent(this, AppView.class);
i.putExtra(AppView.NAME_EXTRA, computer.name); i.putExtra(AppView.NAME_EXTRA, computer.name);
i.putExtra(AppView.UUID_EXTRA, computer.uuid.toString()); i.putExtra(AppView.UUID_EXTRA, computer.uuid.toString());
@ -609,6 +610,11 @@ public class PcView extends Activity implements AdapterFragmentCallbacks {
} }
} }
// Add a launcher shortcut for this PC
if (details.pairState == PairState.PAIRED) {
shortcutHelper.createAppViewShortcut(details.uuid.toString(), details);
}
if (existingEntry != null) { if (existingEntry != null) {
// Replace the information in the existing entry // Replace the information in the existing entry
existingEntry.details = details; existingEntry.details = details;

View File

@ -67,6 +67,17 @@ public class ShortcutHelper {
return null; return null;
} }
@TargetApi(Build.VERSION_CODES.N_MR1)
private boolean isExistingDynamicShortcut(String id) {
for (ShortcutInfo si : sm.getDynamicShortcuts()) {
if (si.getId().equals(id)) {
return true;
}
}
return false;
}
public void reportShortcutUsed(String id) { public void reportShortcutUsed(String id) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
ShortcutInfo sinfo = getInfoForId(id); ShortcutInfo sinfo = getInfoForId(id);
@ -96,11 +107,12 @@ public class ShortcutHelper {
sm.updateShortcuts(Collections.singletonList(sinfo)); sm.updateShortcuts(Collections.singletonList(sinfo));
sm.enableShortcuts(Collections.singletonList(id)); sm.enableShortcuts(Collections.singletonList(id));
} }
else {
// Reap shortcuts to make space for this new one
reapShortcutsForDynamicAdd();
// Add the new shortcut // Reap shortcuts to make space for this if it's new
// NOTE: This CAN'T be an else on the above if, because it's
// possible that we have an existing shortcut but it's not a dynamic one.
if (!isExistingDynamicShortcut(id)) {
reapShortcutsForDynamicAdd();
sm.addDynamicShortcuts(Collections.singletonList(sinfo)); sm.addDynamicShortcuts(Collections.singletonList(sinfo));
} }
} }