Перекрытие / Двойной звук в Уведомлениях в Android Oreo - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть приложение, в котором я обновил звук уведомления (добавил пользовательский звук).Теперь проблема в том, что я получаю двойные звуки, когда получаю уведомление, 1, который у меня был ранее, и второй, который я добавил новый.После поиска и поиска в Google я узнал, что нам нужно удалить и переустановить приложение, чтобы "новый" звук работал.Так что очевидно, я не могу попросить своих пользователей 2k + переустановить приложение.Так есть ли способ это исправить?Я думаю, что некоторые временные данные хранятся в уведомлении менеджера для обработки / воспроизведения уведомлений (не знаю, мое предположение).

Это мой код

    public void sendNotification(String string, Context context) {

        //    NotificationManager notificationManager2 = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
        notificationManager.cancel(notificationId);


        if (soundUri == null) {
            soundUri = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.mycustomsound);
        }
//        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        String channelId = "channel-01";
        String channelName = "Channel Name";
        int importance = NotificationManager.IMPORTANCE_HIGH;
        Intent intent = new Intent(context, MainFrag.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            NotificationChannel mChannel = new NotificationChannel(
                    channelId, channelName, importance);
            AudioAttributes attributes = new AudioAttributes.Builder()
                   .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                    .setUsage(AudioAttributes.USAGE_NOTIFICATION)
                    .build();
            mChannel.setSound(soundUri, attributes);
            notificationManager.createNotificationChannel(mChannel);

            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, channelId)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle("My Title")
                    .setContentText("Hello there!")
                    .setContentIntent(pendingIntent)
                    .setAutoCancel(true)
                    .setDefaults(0)
                    .setGroupAlertBehavior(GROUP_ALERT_SUMMARY);

            TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);

            stackBuilder.addNextIntent(intent);

            mBuilder.setContentIntent(pendingIntent);

            notificationManager.notify(notificationId, mBuilder.build());

        } else {

            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, channelId)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle("Title")
                    .setContentText("Hello there!")
                    .setContentIntent(pendingIntent)
                    .setAutoCancel(true)
                    .setDefaults(0)
                    .setGroupAlertBehavior(GROUP_ALERT_SUMMARY);
//                .setSound(defaultSoundUri);
                    .setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
                            + "://" + context.getPackageName() + "/raw/mycustomsound"));

            TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);

            stackBuilder.addNextIntent(intent);

            mBuilder.setContentIntent(pendingIntent);

            notificationManager.notify(notificationId, mBuilder.build());
        }
    }

А также, иногда я получаюУведомление о призраках также (4-5 раз звучит в очереди! Поэтому в моем коде должен быть какой-то сбой.

...