Android - Уведомление: использование типов потоков не рекомендуется для операций, отличных от регулировки громкости, но я использую каналы уведомлений - PullRequest
0 голосов
/ 09 марта 2019

Я понимаю, что некоторые ответы, такие как этот , кажется, охватили это, но я верю, что точно следую процедуре и все еще получаю предупреждение.В моем приложении я хочу, чтобы один канал для уведомлений на переднем плане всегда был там, а другой - для 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 () и обо всем этом.Что происходит?

...