Mise en œuvre de la notification expansion et effondrement android

j'ai besoin de mettre en œuvre la notification étendre et s'effondrer dans la barre d'État pour android 4.0 et version supérieure. J'ai cherché sur google pour cela, mais n'a pas obtenu de solution de code pour la mise en œuvre est-ce que quelqu'un a I idée comment mettre en œuvre ce

Merci d'avance

25
demandé sur Pratik 2012-12-05 14:08:00
la source

3 ответов

un extensible Notification est un cas particulier d'une Notification Big View. Si le Big View n'est pas en haut du tiroir de notification, il est affiché "fermé" et est extensible par balayage. Citation de Développeurs Android:

la vue d'ensemble d'une notification n'apparaît que lorsque la notification est étendue, ce qui se produit lorsque la notification est en haut du tiroir de notification, ou lorsque l'utilisateur étend la notification par un geste. Notifications élargies sont disponibles à partir de Android 4.1.

Big ViewNotification peut être créé comme suit:

Notification notification = new Notification.BigTextStyle(builder)
.bigText(myText).build();

ou

Notification notification = new Notification.BigPictureStyle(builder)
.bigPicture(
  BitmapFactory.decodeResource(getResources(),
    R.drawable.my_picture)).build();

Ici est un tutoriel.

38
répondu Gunnar Karlsson 2012-12-05 14:46:43
la source
Notification noti = new Notification.Builder()
... // The same notification properties as the others
.setStyle(new Notification.BigPictureStyle().bigPicture(mBitmap))
.build();

Vous changez

.setStyle(new NotificationCompat.BigTextStyle().bigText(th_alert))

avec l'annonce OK !!!

notification = new NotificationCompat.Builder(context)

Voici un exemple:

enter image description here vous pouvez définir le Code

Intent intent = new Intent(context, ReserveStatusActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
intent = new Intent(String.valueOf(PushActivity.class));
intent.putExtra("message", MESSAGE);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(PushActivity.class);
stackBuilder.addNextIntent(intent);
// PendingIntent pendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

// android.support.v4.app.NotificationCompat.BigTextStyle bigStyle = new     NotificationCompat.BigTextStyle();
// bigStyle.bigText((CharSequence) context);

notification = new NotificationCompat.Builder(context)
    .setSmallIcon(R.mipmap.ic_launcher)
    .setContentTitle(th_title)
    .setContentText(th_alert)
    .setAutoCancel(true)
 // .setStyle(new Notification.BigTextStyle().bigText(th_alert)  ตัวเก่า
 // .setStyle(new NotificationCompat.BigTextStyle().bigText(th_title))
    .setStyle(new NotificationCompat.BigTextStyle().bigText(th_alert))
    .setContentIntent(pendingIntent)
    .setNumber(++numMessages)
    .build();

notification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
notificationManager.notify(1000, notification);

ou

 private void sendNotification(RemoteMessage.Notification notification, Map<String, String> data) {
        Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.logo);

        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
               // .setContentTitle(notification.getTitle())
                .setContentTitle(getResources().getText(R.string.app_name))
                .setContentText(notification.getBody())
                .setAutoCancel(true)
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                .setContentIntent(pendingIntent)
                .setStyle(new NotificationCompat.BigTextStyle().bigText(notification.getBody()))
                .setContentInfo(notification.getTitle())
                .setLargeIcon(icon)
                .setColor(Color.RED)
                .setSmallIcon(R.drawable.logo);

        try {
            String picture_url = data.get("picture_url");
            if (picture_url != null && !"".equals(picture_url)) {
                URL url = new URL(picture_url);
                Bitmap bigPicture = BitmapFactory.decodeStream(url.openConnection().getInputStream());
                notificationBuilder.setStyle(
                        new NotificationCompat.BigPictureStyle().bigPicture(bigPicture).setSummaryText(notification.getBody())
                );
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        notificationBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
        notificationBuilder.setLights(Color.YELLOW, 1000, 300);

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, notificationBuilder.build());
    }
32
répondu Pong Petrung 2017-10-17 07:52:19
la source

nous ne pouvons pas créer de notification extensible dans les versions 4.1 d'android ci-dessous. Mais au lieu de cela, nous pouvons faire que nous pouvons empiler les notifications et puis nous pouvons définir une intention en attente de notre activité assez personnalisée qui montre toutes les notifications dans la liste. L'utilisateur sera heureux de voir cela :)

0
répondu g4gaj 2014-02-07 15:39:16
la source

Autres questions sur