Я понимаю, что некоторые ответы, такие как этот , кажется, охватили это, но я верю, что точно следую процедуре и все еще получаю предупреждение.В моем приложении я хочу, чтобы один канал для уведомлений на переднем плане всегда был там, а другой - для push-уведомлений, проходящих отдельно.Вот мой код:
private void startNotifications(){
if (Build.VERSION.SDK_INT >= 26) {
NotificationChannel channel = new NotificationChannel(getResources().getString(R.string.ForegroundID),
getResources().getString(R.string.foreground_channel_name), NotificationManager.IMPORTANCE_LOW);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
channel.setDescription(getResources().getString(R.string.foreground_channel_description));
channel.setShowBadge(false);
channel.setSound(defaultSound, null);
//TODO Another nonsense warning over here, is there a way to fix it?
notificationManager.createNotificationChannel(channel);
NotificationChannel channel2 = new NotificationChannel(getResources().getString(R.string.PushID),
getResources().getString(R.string.push_channel_name), NotificationManager.IMPORTANCE_HIGH);
channel.setDescription(getResources().getString(R.string.push_channel_description));
channel.setShowBadge(false);
channel.setSound(defaultSound, null);
notificationManager.createNotificationChannel(channel2);
}
Notification foregroundNotification = createNotification();
//Must be called within 5 seconds of Service being started or else Android will crash the app
startForeground(ONGOING_NOTIFICATION_ID, foregroundNotification);
}
Он вызывает
private Notification createNotification(){
String[] initialData = getNotificationInfo();
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent activityPendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
Intent closeService = new Intent(this, MainActivity.class);
closeService.setAction(getResources().getString(R.string.IntentAction_CloseService));
closeService.putExtra(getResources().getString(R.string.IntentExtra_CloseService), getResources().getString(R.string.Intent_CloseFromNotification));
PendingIntent closePendingIntent = PendingIntent.getActivity(this, 0, closeService, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, getResources().getString(R.string.ForegroundID))
.setSmallIcon(R.drawable.pic_small)
.setContentTitle(initialData[0])
.setContentText(initialData[1])
.setContentIntent(activityPendingIntent)
.setShowWhen(false)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setCategory(NotificationCompat.CATEGORY_SERVICE)
.setColor(getResources().getColor(R.color.picGray))
.setSound(defaultSound)
.addAction(R.drawable.pic_small, getResources().getString(R.string.end_service_text), closePendingIntent);
return builder.build();
}
И на протяжении жизненного цикла приложения я обновляю уведомление на переднем плане:
private void updateForegroundNotification (){
Log.i("BLE_Service", "Updating Foreground Notification!");
Notification updatedNotification = createNotification();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(ONGOING_NOTIFICATION_ID, updatedNotification);
}
Но всякий раз, когдаПри обновлении уведомлений переднего плана я получаю предупреждение об устаревших типах потоков, о setSound () и обо всем этом.Что происходит?