Получать обратный вызов / трансляцию при закреплении ярлыка в Android O
Я пытаюсь добавить два ярлыка одновременно. Но android 8 показывает диалог и запрашивает у пользователя разрешение на добавление ярлыка, и два из этих диалогов не могут быть представлены одновременно.
Поэтому мне нужен способ, с помощью которого я могу получить обратный вызов или трансляцию, когда первый диалог закрыт, чтобы потом я мог добавить еще один ярлык. В настоящее время я могу получить трансляцию, когда пользователь разрешает запрос. Но я хочу знать , отменил ли пользователь диалог.
Я использую следующий код:
@RequiresApi(api = Build.VERSION_CODES.O)
private static void addShortcutNew(Context context, Intent shortcutIntent, String label, int iconRes, int color) {
ShortcutManager manager = context.getSystemService(ShortcutManager.class);
if (manager != null && manager.isRequestPinShortcutSupported()) {
ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(context, label)
.setIcon(prepareIcon(context, iconRes, color)) // prepareIcon is my own method which returns an Icon.
.setIntent(shortcutIntent)
.setShortLabel(label)
.setLongLabel(label)
.build();
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Broadcast", Toast.LENGTH_SHORT).show();
context.unregisterReceiver(this);
}
}, new IntentFilter("test_action"));
Intent intent = new Intent("test_action");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 123, intent, 0);
manager.requestPinShortcut(shortcutInfo, pendingIntent.getIntentSender());
} else {
Toast.makeText(context, R.string.add_shortcut_error, Toast.LENGTH_SHORT).show();
}
}