Как стать автором
Обновить

HTC Sense и виджет погоды — добавляем свой город

Время на прочтение2 мин
Количество просмотров40K
Сегодня я расскажу вам, как научить приложение погоды, входящее в HTC Sense, узнавать ваш город. По умолчанию приложение знает совсем немного городов, а автоопределение местоположения иногда дает осечки, что и произошло в моем случае.


WTF? Должен быть город Ухта.

Ну что ж, попробуем помочь пациенту.
Для начала нужно получить root-доступ к девайсу и залить custom recovery-образ. Это отдельная тема, и затрагивать ее здесь не хочется. Почитать на примере HTC Desire можно тут и там.
Покопавшись немного в файловой системе больного, выясняем, что список городов хранится в файле /system/etc/WP.zip. Нам понадобится файл WP_0419RUS.db из этого архива (для других локалей — по аналогии). При внимательном рассмотрении файл оказывается ничем иным, как базой SQLite. Что ж, берем первый попавшийся под руку инструмент для вскрытия (например Lita — SQLite Administration Tool) и находим таблицу “locationlist”. Теперь остается добавить новую запись в таблицу. Главный атрибут здесь — “code”, вида часть_света|страна|регион|город. Проще всего скопировать это поле из уже существующего города вашего региона, заменив город на свой. Проверить правильное написание города можно на accuweather.com.



Запаковываем обратно наш модифицированный файл и заливаем в корень карты пациента. Перезагружаем девайс в recovery-mode, подключаем по usb и запускаем adb:

C:\android-sdk\tools\>adb shell
# mount /system
# mount /sdcard
# rm /system/etc/WP.zip
# cp /sdcard/WP.zip /system/etc


Осталось лишь перезагрузить пациента и очистить данные приложения Weather Provider.



Теперь уверенно запускаем Погоду и находим наш свежедобавленный город. Вуаля, магия свершилась!



На сем позвольте раскланяться, надеюсь информация кому-нибудь пригодится.

P.S.: Если есть возможность проверить на аппаратах, отличных от Desire, прошу в комментарии.

Update: как было подсказано пользователем MainNika, загружать recovery-mode необязательно:
В режиме отладки USB можно ввести
./adb remount
и /system станет доступным для записи
потом обратно
./adb remount
Теги:
Хабы:
Всего голосов 33: ↑28 и ↓5+23
Комментарии31

Публикации