Уведомление Android setAutoCancel() не будет работать при использовании setPrimaryClip() в BroadcastReceiver

Я столкнулся со странным поведением, пытаясь сделать очень простое приложение. Я запускаю уведомление, и когда пользователь нажимает на него, я копирую произвольный текст в буфер обмена. Вот как я запускаю уведомление:

// Build notification
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent intent = new Intent(this, NotificationBroadcastReceiver.class);
intent.putExtra("test", "hello");
PendingIntent broadcastIntent = PendingIntent.getBroadcast(this, 0, intent, Intent.FILL_IN_DATA | PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder notification = new NotificationCompat.Builder(this)
        .setContentTitle("Hello!")
        .setContentText("Hi!")
        .setSmallIcon(R.drawable.icon)
        .setContentIntent(broadcastIntent)
        .setOngoing(false)
        .setDefaults(Notification.DEFAULT_ALL)
        .setTicker("Click me!")
        .setAutoCancel(true);
notificationManager.notify(0, notification.build());

А это мой BroadcastReceiver:

public class NotificationBroadcastReceiver extends BroadcastReceiver {

    public NotificationBroadcastReceiver() {

    }

    @Override
    public void onReceive(Context context, Intent 
        // Copy the text to the clipboard when notification is clicked
        ClipboardManager clipboard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE);
        ClipData clip = ClipData.newPlainText("", "");
        clipboard.setPrimaryClip(clip);
    }
}

Я просто копирую пустую строку в буфер обмена. Таким образом, когда я нажимаю на уведомление, оно не гаснет, как при настройке. setAutoCancel(true)НО если я уберу строку:

clipboard.setPrimaryClip(clip);

От BroadcastReceiver затем уведомление закрывается при нажатии, как и должно быть. Почему это происходит?

0 ответов

Другие вопросы по тегам