web-dev-qa-db-fra.com

Comment appliquer un style de vue agrandie à une notification à l'aide de la bibliothèque Parse

Cette bibliothèque fonctionne parfaitement, mais j'ai un doute.

Lorsque j'envoie un message à des utilisateurs de plus de deux lignes, ils ne peuvent pas voir tous les messages dans la zone de notification.

Mais je sais qu'Android peut le faire 

http://developer.Android.com/guide/topics/ui/notifiers/notifications.html#ApplyStyle . Comment le faire pour la notification de parse.com?

Regardez les images pour expliquer mon problème

Image1 http://gorio.eng.br/parse1.png

Image2 http://gorio.eng.br/parse2.png

13
Gorio
Bitmap icon1 = BitmapFactory.decodeResource(getResources(),
                    R.drawable.gorio);

            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                    getApplicationContext()).setAutoCancel(true)
                    .setContentTitle("Exemplo 1")
                    .setSmallIcon(R.drawable.gorio)
                    .setLargeIcon(icon1).setContentText("Hello World!");

            NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
            bigText.bigText(msg);
            bigText.setBigContentTitle("GORIO Engenharia");
            bigText.setSummaryText("Por: GORIO Engenharia");
            mBuilder.setStyle(bigText);
            mBuilder.setPriority(NotificationCompat.PRIORITY_MAX);

            // Creates an explicit intent for an Activity in your app
            Intent resultIntent = new Intent(getApplicationContext(),
                    MainActivity.class);

            // The stack builder object will contain an artificial back
            // stack for
            // the
            // started Activity.
            // getApplicationContext() ensures that navigating backward from
            // the Activity leads out of
            // your application to the Home screen.
            TaskStackBuilder stackBuilder = TaskStackBuilder
                    .create(getApplicationContext());

            // Adds the back stack for the Intent (but not the Intent
            // itself)
            stackBuilder.addParentStack(MainActivity.class);

            // Adds the Intent that starts the Activity to the top of the
            // stack
            stackBuilder.addNextIntent(resultIntent);
            PendingIntent resultPendingIntent = stackBuilder
                    .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
            mBuilder.setContentIntent(resultPendingIntent);

            NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

            // mId allows you to update the notification later on.
            mNotificationManager.notify(100, mBuilder.build());
16
Gorio

Voici un exemple utilisant Notification.BigTextStyle

    final String someLongText = "fkdljfdldkfj;ldaksjfkladj;flja;lkjdfljadslfjaddfdsfafjdfad" +
            "fdl;akjf;lkdf;lkaj;flkjda;lkfjadljflk;adsjfladjflk;dfjlkdjflakdfjdaffjdlfjdjjj" +
            "adjflkjadlkfjad;lkfjad;sljf;ladkjajlkfjad;lksfjl;akdjf;lkdsajf;lkdjfkadj;flkad" +
            "jf;lkadjfkldas;lkfja;dljf;lkdasjf;lkadjs;lfjas;ldkfj;lkadsjfl;kadljfl;kasdjf;l" +
            "jdlskfjklda;fjadslkfj;sdalkfj;ladjf;lajdl;fkajld;kfjlajfl;adjfl;kajdl;fjadl;kfj;";

    final Notification.Builder builder = new Notification.Builder(this);
    builder.setStyle(new Notification.BigTextStyle(builder)
            .bigText(someLongText)
            .setBigContentTitle("Big title")
            .setSummaryText("Big summary"))
            .setContentTitle("Title")
            .setContentText("Summary")
            .setSmallIcon(Android.R.drawable.sym_def_app_icon);

    final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    nm.notify(0, builder.build());

Example

22
adneal

Cet extrait montre comment construire l'objet Builder. Il définit le style de la grande vue sur big text et définit son contenu sur le message de rappel. 

String msg="This is Big style notification builder.This is Big style notification  builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder.This is Big style notification builder."

// Constructs the Builder object.
NotificationCompat.Builder builder =
    new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.ic_stat_notification)
    .setContentTitle(getString(R.string.notification))
    .setContentText(getString(R.string.ping))
    .setDefaults(Notification.DEFAULT_ALL) // requires VIBRATE permission
    .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))

final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(0, builder.build());

Pour plus d'informations, visitez: http://developer.Android.com/training/notify-user/expanded.html

5
M D

Ici, j'ai joint des captures d'écran, le premier écran contient le titre du message et, lorsque nous cliquons sur la flèche vers le bas à droite du nom de l'application, la seconde capture d'écran présente une disposition personnalisée pour la notification Push. que j'ai conçu pour le mien.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="4dp"
xmlns:card_view="http://schemas.Android.com/apk/res-auto"
Android:orientation="vertical"
card_view:cardCornerRadius="5dp"
card_view:cardUseCompatPadding="true">

<LinearLayout
Android:layout_width="match_parent"
Android:orientation="horizontal"
Android:background="#80000000"
Android:layout_height="wrap_content">

<ImageView
    Android:src="@mipmap/ic_launcher"
    Android:layout_width="50dp"
    Android:layout_height="match_parent"
    Android:padding="10dp"
    Android:layout_marginLeft="5dp"
    Android:background="@null"
    Android:layout_gravity="center_vertical|center_horizontal"
    Android:scaleType="centerCrop"/>
<TextView
    Android:id="@+id/title"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_gravity="bottom"
    Android:minHeight="48dp"
    Android:paddingBottom="16dp"
    Android:paddingLeft="16dp"
    Android:paddingRight="16dp"
    Android:paddingTop="16dp"
    Android:background="@Android:color/transparent"
    Android:textColor="@Android:color/white"
    tools:text="Test"/>
 </LinearLayout>
 <ImageView
Android:id="@+id/image"
Android:layout_width="match_parent"
Android:layout_height="fill_parent"
Android:adjustViewBounds="true"
Android:contentDescription="@null"
Android:scaleType="centerCrop"
Android:src="@drawable/placeholder"/>
</LinearLayout>

Méthode de création de Notification avec mise en page personnalisée,

public static void createNotification(String title, String body,String image_url, Context context, int notificationsId, String single_id) {
Intent notificationIntent;

long when = System.currentTimeMillis();
int id = (int) System.currentTimeMillis();

Bitmap bitmap = getBitmapFromURL(image_url);
NotificationCompat.BigPictureStyle notifystyle = new NotificationCompat.BigPictureStyle();
notifystyle.bigPicture(bitmap);
RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewBitmap(R.id.image, bitmap);
contentView.setTextViewText(R.id.title, body);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
        .setSmallIcon(R.drawable.ic_launcher)
        .setStyle(notifystyle)
        .setCustomBigContentView(contentView)
        .setContentText(body);
NotificationManager mNotificationManager = (NotificationManager) context
        .getSystemService(Context.NOTIFICATION_SERVICE);

notificationIntent = new Intent(context, SinglePost.class);
notificationIntent.putExtra("single_id",single_id);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(context, id, notificationIntent, 0); 

Notification notification = mBuilder.build();
notification.contentIntent = contentIntent;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;


mNotificationManager.notify(notificationsId, notification);

}

public static Bitmap getBitmapFromURL(String strURL) {
try {
    URL url = new URL(strURL);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setDoInput(true);
    connection.connect();
    InputStream input = connection.getInputStream();
    Bitmap myBitmap = BitmapFactory.decodeStream(input);
    return myBitmap;
} catch (IOException e) {
    e.printStackTrace();
    return null;
}
}

 enter image description here

 enter image description here

2
Jayakumar

vous avez mis 

String en_alert ,th_alert ,en_title,th_title ,id;
int noti_all, noti_1, noti_2, noti_3, noti_4 = 0, Langage;

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 ) // th_title  >>> String =  th_title   
                 .setContentText(th_alert)   // th_alert>>> String =  th_title
                 .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);

Facebook facebook.com/PongLoveWii

1
Pong Petrung
final String someLongText = "......";

final Notification.Builder builder = new Notification.Builder(this);
builder.setStyle(new Notification.BigTextStyle(builder)
        .bigText(someLongText)
        .setBigContentTitle("Big title")
        .setSummaryText("Big summary"))
        .setContentTitle("Title")
        .setContentText("Summary");

final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(0, builder.build());
1
Ravdeep Sohi

vous pouvez créer une notification avec un gros style de texte .__ essayer ce code 

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

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle(title)
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(id /* ID of notification */, notificationBuilder.build());
0
yousef

Vous devez redéfinir la méthode getNotification de votre sous-classe ParsePushBroadcastReceiver et, au-dessus, de nombreuses réponses expliquent comment définir l'affichage de contenu volumineux sur une notification.

0
Douglas Marques