[JAVA] Fügen Sie das von http erhaltene Bild in NotificationCompat ein

NotificationCompat.Builder ist eine Funktion, die Push-Benachrichtigungen für Terminals senden kann. Da es eine Methode namens setLargeIcon (Bitmap-Bitmap) gibt, implementieren Sie sie damit.

Verwenden Sie AsyncTask, um die Bild-URL über HTTP abzurufen Schreiben Sie eine Klasse, die Push-Benachrichtigungen mit in NotificationCompat.Builder festgelegter Bitmap sendet.

class SendNotificationBuilder extends AsyncTask<String, Void, Bitmap> {

  private String title;
  private String message;
  private String imageUrl;
  private Intent intent;

  public SendNotificationBuilder(Context context) {
    super();
    this.context = context;
  }

  public SendNotificationBuilder setTitle(String title) {
    this.title = title;
    return this;
  }

  public SendNotificationBuilder setMessage(String message) {
    this.message = message;
    return this;
  }

  public SendNotificationBuilder setImageUrl(String imageUrl) {
    this.imageUrl = imageUrl;
    return this;
  }

  public SendNotificationBuilder setIntent(Intent intent) {
    this.intent = intent;
    return this;
  }

  @Override
  protected Bitmap doInBackground(String... params) {
      if (imageUrl == null) return null;
      InputStream in;
      try {
        URL url = new URL(imageUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        in = connection.getInputStream();
        Bitmap bitmap = BitmapFactory.decodeStream(in);
        return bitmap;
      } catch (MalformedURLException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
      return null;
  }

  @Override
  protected void onPostExecute(Bitmap bitmap) {
    super.onPostExecute(bitmap);
    try {
      NotificationManagerCompat manager = 
          NotificationManagerCompat.from(getApplicationContext());
      NotificationCompat.Builder builder;
      builder = new NotificationCompat.Builder(context)
          .setContentTitle(title)
          .setContentText(text);

      builder.setSmallIcon(R.drawable.icon_app);
      builder.setColor(ContextCompat.getColor(context, R.color.white));
      if (bitmap != null) {
        builder.setLargeIcon(bitmap);
      }
      builder.setAutoCancel(true);

      PendingIntent contentIntent = PendingIntent.getActivity(
          getApplicationContext(), REQUEST_ID,
          intent, PendingIntent.FLAG_ONE_SHOT);
      builder.setContentIntent(contentIntent);
      manager.notify(NOTIFY_ID, builder.build());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Anruf.

new SendNotificationBuilder(getApplicationContext())
    .setTitle(title)
    .setText(text)
    .setImageUrl(imageUrl)
    .setIntent(intent)
    .execute();

Recommended Posts

Fügen Sie das von http erhaltene Bild in NotificationCompat ein
Zeichnen Sie den Bildschirm mit Thymeleaf in SpringBoot
Fügen Sie das von http erhaltene Bild in NotificationCompat ein
JavaFX-Bild im Hintergrund laden
Rails6: Extrahieren Sie das Bild im Aktionstext
[Android-Entwicklung] Holen Sie sich mit Java Bilder vom Server und legen Sie sie in ImageView fest! !!
Rufen Sie die URL des HTTP-Umleitungsziels in Java ab
Lesen Sie die Paketerfassung, die von tcpdump mit Java erhalten wurde
Tokoro habe ich in der Migration von Wicket 7 auf 8 umgeschrieben
Rufen Sie die URL des HTTP-Umleitungsziels in Ruby ab
[Schienen] So zeigen Sie Bilder in der Ansicht an