mosmetro-android
mosmetro-android copied to clipboard
Обновление до SDK 27
После перехода основной ветки на Android API 27 возникло несколько довольно серьёзных проблем с ранее стабильными компонентами:
- [x] Поддержка адаптивных иконок;
- [x] Иконки сломаны на Android 7.x (и, возможно, более старых версиях);
- [x] На Android 8 перестали работать уведомления (в частности новости). Чтобы их исправить, нужно применить этот патч или что-то получше;
- [x] ~~setPriority() больше не работает. Вместо этого используется importance для канала уведомлений. При этом importance сменить невозможно, что лишает нас возможности менять приоритет уведомлений на ходу. Это осложняет работу постоянного фонового процесса (см. ниже);~~
- [ ] Забыть обо всём, что написано выше, и реализовать два канала уведомлений: для постоянного процесса и остальных. Тогда пользователь сможет сам указать приоритет уведомлений по своему желанию;
- [x] Перестало работать автоматическое подключение из-за отмены поддержки необходимых ресиверов, в данный момент прописанных в манифесте. Нужно создать постоянный сервис с уведомлением и регистрировать ресиверы динамически. [источник];
- [x] Реализовать постоянный фоновый процесс для ресиверов;
- [x] Запускать процесс при открытии главного меню, переключении виджета и при загрузке системы (если автоподключение активно);
- [x] Защитить процесс с помощью уведомления;
- [x] Интегрировать уведомления ConnectionService и нового сервиса;
- [x] ~~Создавать уведомление с низким приоритетом (см. выше);~~
- ~~Спрятать иконку foreground процесса невозможно [источник];~~
- [ ] Сделать процесс отключаемым на Android 7.x и ниже (и отключить по умолчанию);
- [ ] Уникальная иконка для уведомления процесса?
- [ ] Android закрыл доступ к названию сети. Нужно запросить получение к информации о местоположении устройства. [источник];
- При этом через Intent название доступно. Только лог немного пострадал.
- [ ] Другой вариант: Получать название сети только из Intent на Android 8.0+. Это позволит избежать запроса дополнительных разрешений.
- [ ] Создание ярлыков из главного меню не работает (#211);
- [ ] Начиная с API 26 TYPE_TOAST перестаёт работать. Это не позволит нам без дополнительных разрешений запускать WebView "в фоне".
@TheDrHax есть новости о скором появлении Android P, где будет запрет на использование API ниже 17 https://developer.android.com/reference/android/os/Build.VERSION.html#MIN_SUPPORTED_TARGET_SDK_INT Разумеется, лучшем вариантом будет собирать несколько версий apk.
@igor-dyatlov Возможно, что проект и без этого разделится на две части. Дело в том, что в ветке webview возникла необходимость подмены заголовков в ответе сервера. А сделать это можно только начиная с API 21. Так что можно будет сделать сборки 11-20 и 21-27. При этом старые продолжат работать, но шанс получения бана останется прежним.