Переименуйте AppWidgetProvider, не ломая существующие виджеты - PullRequest
0 голосов
/ 22 декабря 2018

Недавно я обнаружил, что после того, как я переименовал свой класс, который расширяет AppWidgetProvider (как часть очистки кода), и установил измененное приложение, существующие виджеты сломались бы, отображая просто «Проблема загрузки виджета».

Добавление свежего виджета на домашний экран работает нормально, это просто существующие виджеты, которые ломаются.Хотя я, как разработчик, не возражаю против удаления существующего виджета и добавления нового, пользователи моего приложения не будут любезно делать это, поскольку каждый виджет требует переконфигурирования.

Есть способ безопасно переименовать класс AppWidgetProvider, не нарушая существующие виджеты?Я мог бы, конечно, просто сохранить имя таким, какое оно есть, но это вызывает у меня неприятное ощущение, что я застрял с (немного запутанным) именем навсегда.

1 Ответ

0 голосов
/ 25 декабря 2018

К сожалению, нет способа это исправить.Проблема в изменившемся ComponentName. AppWidgetHost просто пытается получить ваши виджеты из AppWidgetManager , а AppWidgetManager пытается получить предыдущие виджеты по ComponentName , поэтому после изменения имени пакетаВаш AppWidgetProvider , AppWidgetHost не может восстановить ваши предыдущие виджеты, потому что он был сохранен old ComponentName.Итак, как вы можете видеть, нет способа изменить имя пакета AppWidgetProvider .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...