2

As the title says i want to use the FCM to send a payload and load a bitmap to use it in the Notification Big picture. I tried this method (Code is below) to get the image, but it didn't worked. Any help is much appreciated

Thank you

String imageUrl;

/**
 * Called when message is received.
 *
 * @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
 */
// [START receive_message]
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // TODO(developer): Handle FCM messages here.
    // If the application is in the foreground handle both data and notification messages here.
    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated. See sendNotification method below.

    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);

    if (remoteMessage.getData().size() > 0) {
        imageUrl = remoteMessage.getData().toString();
    }

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    Notification.Builder notificationBuilder = new Notification.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("Glaze")
            .setContentText(remoteMessage.getNotification().getBody())
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setLargeIcon(getBitmap(imageUrl))
            .setStyle(new Notification.BigPictureStyle().bigPicture(getBitmap(imageUrl)))
            .setContentIntent(pendingIntent);

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

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

    Log.d(TAG, "From: " + remoteMessage.getFrom());
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
}
// [END receive_message]

public static Bitmap getBitmap(String src) {
    try {
        URL url = new URL(src);
        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;
    }
}
Sasi Kanth
  • 709
  • 8
  • 17

1 Answers1

0

You need to use NotificationCompat.BigPictureStyle for a big picture layout. Also you'll have to post the notification after you load the bitmap from the url.

Anubhav
  • 83
  • 1
  • 1
  • 6
  • I am using this Notification.BigPictureStyle() instead of Notification Compat. I am getting that style but the image isn't loaded. How should i load it before, any code examples? – Sasi Kanth Aug 14 '16 at 11:31
  • 1
    You could use an AsyncTask to download the image from the url in the `doInBackground()` and post the notification from the `onPostExecute()`. [Similar Question](https://stackoverflow.com/questions/24840282/load-image-from-url-in-notification-android) – Anubhav Aug 14 '16 at 13:08