[JAVA] Mettez l'image obtenue à partir de http dans NotificationCompat

NotificationCompat.Builder est une fonction qui peut envoyer des notifications push pour les terminaux. Puisqu'il existe une méthode appelée setLargeIcon (bitmap bitmap), implémentez-la en l'utilisant.

Utilisez AsyncTask pour obtenir l'URL de l'image via HTTP Écrivez une classe qui envoie des notifications Push avec Bitmap défini dans NotificationCompat.Builder.

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

Appel.

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

Recommended Posts

Mettez l'image obtenue à partir de http dans NotificationCompat
Dessiner un écran avec Thymeleaf dans SpringBoot
Mettez l'image obtenue à partir de http dans NotificationCompat
Image JavaFX-Load en arrière-plan
Rails6: Extraire l'image dans le texte d'action
[Développement Android] Obtenez des images du serveur avec Java et définissez-les dans ImageView! !!
Obtenez l'URL de la destination de la redirection HTTP en Java
Lire la capture de paquets obtenue par tcpdump avec Java
Tokoro j'ai réécrit dans la migration de Wicket 7 à 8
Obtenez l'URL de la destination de la redirection HTTP dans Ruby
[Rails] Comment afficher les images dans la vue