Вдруг Android Wearable больше не показывает уведомления? - PullRequest
0 голосов
/ 10 мая 2018

для своего приложения я использую сервис, который реализует SensorEventListener. Служба собирает данные датчика с носимых. В этом сервисе я запускаю уведомление. На прошлой неделе, когда я тестировал свое приложение, все работало нормально. Но вдруг мой носимый не показывает уведомление, пока мой сервис находится на переднем плане. Даже старые версии моего приложения больше не отображают уведомление. Это очень запутанно. Итак, для решения проблемы сделал это:

  1. Я проверил, действительно ли мой сервис находится на переднем плане: да, это действительно так. На консоль я также вижу, что часы действительно собирают данные, поэтому сервис делает свое дело.
  2. Потом я просмотрел stackoverflow и обнаружил, что, возможно, мое приложение получило Приглушил: я искал его на своем телефоне, носимом и Google Wear App, но ничего не нашел. Поэтому я сбросил свои часы, взял другой телефон, где я установил Google Wear App. После этого я в паре носил с телефоном. Затем я развернул мое приложение на «новом» телефоне и часы: уведомление не видно. Я также изменил идентификатор приложения, чтобы увидеть, если это что-то изменит: нет.
  3. У меня есть старые версии моего текущего приложения, где я на 100% уверен, что уведомление действительно появилось. Я проверил их: уведомление не виден больше.

Я не знаю, что делать. Мой сервис запускается, он действительно находится на переднем плане, и не похоже, что приложение отключено.

Я установил уведомление в onCreate () моего сервиса:

 Notification.Builder builder = new Notification.Builder(this);
    builder.setContentTitle("TestApplication");
    builder.setContentText("Collecting sensor data..");
    builder.setSmallIcon(R.drawable.ic_launcher);

    startForeground(1, builder.build());

И в onCreate () я также проверяю, находится ли мой сервис на переднем плане. Для этого я использую метод (это копирование-вставка из другого кода stackoverflow с небольшими изменениями):

private boolean isServiceRunningInForeground(String serviceName){
    boolean serviceRunning = false;
    ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
    Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
    while (i.hasNext()) {
        ActivityManager.RunningServiceInfo runningServiceInfo = i
                .next();

        if(runningServiceInfo.service.getClassName().equals(serviceName)){

            if(runningServiceInfo.foreground)
            {
                return true;
            }
        }
    }
    return false;
}

1 Ответ

0 голосов
/ 10 июня 2018

Проблема заключалась в том, что я пытался создать уведомление с помощью Notification.Builder при использовании SDK версии 26. Не знал, что с SDK 26 я должен использовать NotificationCompat.Builder с каналом уведомлений.

Итак, для всех с такой же проблемой: - измените свой SDK на более низкую версию или - используйте NotificationCompat.Builder (контекстный контекст, StringtificationChannel) вместо Notification.Builder

...