This is my code below. This does not allow you to create notifications on Android O, despite creating a notification channel.
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); }
I believe that I have completed all the steps necessary to create a Notification on Android O - Creating a notification channel using the notification manager, followed by creating a notification for this manager. I do not know where I am wrong.
EDIT 1: The following change to the weatherNotification () method has been made, still not working:
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: From the "Edit 1" code, I found out that the builder is being regenerated again. So I made the following changes again:
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); .... }