Обходное решение RemoteViewsService для ошибки виджета Huawei EMUI 8 Oreo? - PullRequest
0 голосов
/ 18 октября 2018

Итак, ошибка в реализации Huawei Oreo (EMUI 8) убивает функциональность виджетов, которые используют RemoteViewsService (они просто больше не обновляются).Это известная ошибка, но Huawei не беспокоится (уже несколько месяцев).

Я прочитал на xda , что существует некоторый обходной путь, который, по-видимому, заставляет виджет обновляться снова.

Итак, я попробовал предложенный обходной путь, основанный на двух вещах:

  • Использовать разные намерения (разные дополнительные) каждый раз, когда мы устанавливаем намерение RemoteViewsService (я даже создаю новую Фабрику на каждомобновление)
  • Прослушивание трансляции USER_PRESENT и обновление оттуда виджета

Тем не менее я получаю сообщения от пользователей о том, что виджет застрял.

Редактировать;Некоторые фрагменты кода:

public static boolean isHuaweiDevice(){
    return Build.MANUFACTURER.equalsIgnoreCase("huawei");
}

public static void applyHuaweiWorkaroundIfShall(Intent intent){
    if(isHuaweiDevice()){
        intent.putExtra("nonce" + new Random().nextInt(), UUID.randomUUID()); 
    }
}
...