Итак, ошибка в реализации 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());
}
}