web-dev-qa-db-fra.com

Comment afficher l'image dans la notification push (Gcm) Android?

Depuis deux jours j'essaye de devenir comme ça. Mais j'ai échoué. S'il vous plaît, quelqu'un me suggère comment obtenir une image dans la notification Push. Merci d'avance.

enter image description here

Codez ce que j'ai essayé:

@SuppressWarnings("deprecation")
private void handleMessage(Context mContext, Intent intent) {
    Bitmap remote_picture = null;
    long when = System.currentTimeMillis();
    int icon = R.drawable.reload_logo;
    try {
        Bundle gcmData = intent.getExtras();
        if(intent.getExtras().getString("message")!=null)
            Log.v("TAG_IMAGE", "" + intent.getExtras().getString("message"));
        Log.v("TAG_IMAGE", "" + intent.getExtras().getString("imageurl"));


        {
            NotificationCompat.BigPictureStyle notiStyle = new NotificationCompat.BigPictureStyle();
            notiStyle.setSummaryText(intent.getExtras().getString("message"));

            try {
                remote_picture = BitmapFactory.decodeStream((InputStream) new URL(intent.getExtras().getString("imageurl")).getContent());
            } catch (IOException e) {
                e.printStackTrace();
            }
            notiStyle.bigPicture(remote_picture);
            notificationManager = (NotificationManager) mContext
                    .getSystemService(Context.NOTIFICATION_SERVICE);
            PendingIntent contentIntent = null;

            Intent gotoIntent = new Intent();
            gotoIntent.setClassName(mContext, "com.reloadapp.reload.fragments.MainActivity");//Start activity when user taps on notification.
            contentIntent = PendingIntent.getActivity(mContext,
                    (int) (Math.random() * 100), gotoIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT);
            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                    mContext);
            Notification notification = mBuilder.setSmallIcon(icon).setTicker("Reload.in").setWhen(0)
                    .setAutoCancel(true)
                    .setContentTitle("Reload.in")
                    .setStyle(new NotificationCompat.BigTextStyle().bigText(intent.getExtras().getString("message")))
                    .setContentIntent(contentIntent)
                    .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                    .setLargeIcon(remote_picture)
                    .setContentText(intent.getExtras().getString("message"))
                    .setStyle(notiStyle).build();


            notification.flags = Notification.FLAG_AUTO_CANCEL;
            count++;
            notificationManager.notify(count, notification);//This will generate seperate notification each time server sends.
        }
    }catch (Throwable e) {
        e.printStackTrace();
    }
}

Je reçois une petite icône et une grande icône avec la même image. Mais j'ai donné différent.

résultat:

14
kartheeki j

merci @Ravi.

@SuppressWarnings("deprecation")
    private void handleMessage(Context mContext, Intent intent) {
        Bitmap remote_picture = null;
        long when = System.currentTimeMillis();
        int icon = R.drawable.reload_logo;
        Bundle gcmData = intent.getExtras();
        //if message and image url
        if(intent.getExtras().getString("message")!=null && intent.getExtras().getString("imageurl")!=null) {
            try {


                Log.v("TAG_IMAGE", "" + intent.getExtras().getString("message"));
                Log.v("TAG_IMAGE", "" + intent.getExtras().getString("imageurl"));


                NotificationCompat.BigPictureStyle notiStyle = new NotificationCompat.BigPictureStyle();
                notiStyle.setSummaryText(intent.getExtras().getString("message"));

                try {
                    remote_picture = BitmapFactory.decodeStream((InputStream) new URL(intent.getExtras().getString("imageurl")).getContent());
                } catch (IOException e) {
                    e.printStackTrace();
                }
                notiStyle.bigPicture(remote_picture);
                notificationManager = (NotificationManager) mContext
                        .getSystemService(Context.NOTIFICATION_SERVICE);
                PendingIntent contentIntent = null;

                Intent gotoIntent = new Intent();
                gotoIntent.setClassName(mContext, "com.reloadapp.reload.fragments.MainActivity");//Start activity when user taps on notification.
                contentIntent = PendingIntent.getActivity(mContext,
                        (int) (Math.random() * 100), gotoIntent,
                        PendingIntent.FLAG_UPDATE_CURRENT);
                NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                        mContext);
                Notification notification = mBuilder.setSmallIcon(icon).setTicker("Reload.in").setWhen(0)
                        .setAutoCancel(true)
                        .setContentTitle("Reload.in")
                        .setStyle(new NotificationCompat.BigTextStyle().bigText(intent.getExtras().getString("message")))
                        .setContentIntent(contentIntent)
                        .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))

                        .setContentText(intent.getExtras().getString("message"))
                        .setStyle(notiStyle).build();


                notification.flags = Notification.FLAG_AUTO_CANCEL;
                count++;
                notificationManager.notify(count, notification);//This will generate seperate notification each time server sends.

            } catch (Throwable e) {
                e.printStackTrace();
            }
        }
}

pour plusieurs lignes:

 .setStyle(new NotificationCompat.BigTextStyle().bigText(intent.getExtras().getString("message"))) // use this
16
kartheeki j