Получать обратный вызов / трансляцию при закреплении ярлыка в Android O - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь добавить два ярлыка одновременно .Но 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();
    }
}
...