Voici mon code ci-dessous. Il est impossible de créer des notifications sur Android O, malgré la création du canal de notification.La notification ne s'affiche pas dans Android O malgré la création d'une chaîne
private void weatherNotification(WeatherInfo weather) {
Intent intent = new Intent(this, WeatherActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
String temperatureScale = prefs.getUnits().equals("metric") ? getString(R.string.c) : getString(R.string.f);
String speedScale = prefs.getUnits().equals("metric") ? getString(R.string.mps) : getString(R.string.mph);
String temperature = getString(R.string.temperature , weather.getMain().getTemp() , temperatureScale);
String city = getString(R.string.city , weather.getName() + ", " + weather.getSys().getCountry());
String wind = getString(R.string.wind_ , weather.getWind().getSpeed(), speedScale);
String humidity = getString(R.string.humidity , weather.getMain().getHumidity());
String pressure = getString(R.string.pressure, weather.getMain().getPressure());
String data = city + "\n" + temperature + "\n" + wind + "\n" + humidity + "\n" + pressure;
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String id = "w01", name = getString(R.string.weather_notification_title);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
String desc = getString(R.string.weather_notification_description);
NotificationChannel channel = new NotificationChannel(id, name, importance);
channel.setDescription(desc);
notificationManager.createNotificationChannel(channel);
}
Notification.Builder builder = new Notification.Builder(this);
builder.setAutoCancel(false);
builder.setContentTitle("Weather Notification");
builder.setContentText(Math.round(weather.getMain().getTemp()) + temperatureScale + " at " + weather.getName());
builder.setStyle(new Notification.BigTextStyle().bigText(data));
builder.setSmallIcon(R.drawable.ic_notification_icon);
builder.setContentIntent(pendingIntent);
if (Build.VERSION.SDK_INT >= 24)
builder.setColor(Color.parseColor("#ff0000"));
Notification notification = builder.build();
notificationManager.notify(0 , notification);
}
je crois que je l'ai suivi toutes les étapes nécessaires à la création d'une notification sur Android O - Création du canal de notification à l'aide du gestionnaire de notification, suivi par la construction de la notification à ce gestionnaire. Je ne sais pas où je vais mal.
EDIT 1: Fait le changement suivant dans la méthode weatherNotification(), ne fonctionne toujours pas:
private void weatherNotification(WeatherInfo weather) {
....
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String id = "w01", name = getString(R.string.weather_notification_title);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
String desc = getString(R.string.weather_notification_description);
NotificationChannel channel = new NotificationChannel(id, name, importance);
channel.setDescription(desc);
notificationManager.createNotificationChannel(channel);
builder = new Notification.Builder(this , id);
}
builder = new Notification.Builder(this);
builder.setAutoCancel(false);
builder.setContentTitle("Weather Notification");
builder.setContentText(Math.round(weather.getMain().getTemp()) + temperatureScale + " at " + weather.getName());
builder.setStyle(new Notification.BigTextStyle().bigText(data));
builder.setSmallIcon(R.drawable.ic_notification_icon);
builder.setContentIntent(pendingIntent);
if (Build.VERSION.SDK_INT >= 24)
builder.setColor(Color.parseColor("#ff0000"));
Notification notification = builder.build();
notificationManager.notify(0 , notification);
....
}
EDIT 2: De 1 Modifier le code, je l'ai trouvé que le constructeur était en cours de régénération à nouveau. Je fis donc les modifications suivantes à nouveau:
private void weatherNotification(WeatherInfo weather) {
....
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String id = "w01", name = getString(R.string.weather_notification_title);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
String desc = getString(R.string.weather_notification_description);
NotificationChannel channel = new NotificationChannel(id, name, importance);
channel.setDescription(desc);
notificationManager.createNotificationChannel(channel);
builder = new Notification.Builder(this , id);
}
else
builder = new Notification.Builder(this);
....
}
S'il vous plaît vérifier EDIT 1 – Sparker0i
EDIT 2, cela a fonctionné .. Merci – Sparker0i