Tweet from @Android
https://twitter.com/Android/status/1130313848332988421
@Android: For Huawei users' questions regarding our steps to comply w/ the recent US government actions: We assure you while we are complying with all US gov't requirements, services like Google Play & security from Google Play Protect will keep functioning on your existing Huawei device.
https://twitter.com/Android/status/1130313848332988421
@Android: For Huawei users' questions regarding our steps to comply w/ the recent US government actions: We assure you while we are complying with all US gov't requirements, services like Google Play & security from Google Play Protect will keep functioning on your existing Huawei device.
Twitter
Android
For Huawei users' questions regarding our steps to comply w/ the recent US government actions: We assure you while we are complying with all US gov't requirements, services like Google Play & security from Google Play Protect will keep functioning on your…
JFYI. Использование форэграунд сервиса не будет выводить ваше приложение в Android 10 из-под действия ограничения "Старт активити из форэграунда".
TL;DR: Андроид 10 будет давить адварей, которые поднимали свой экран из ниоткуда.
Чуть подробнее. В 10-ке будет ограничение, которое заденет всех, вне зависимости от targetAPI, которое будет запрещать приложению поднимать свой экран из ниоткуда на передний план. Этим злоупотребляли всякие адвари. И некоторые полезные приложения использовали это в своих сценариях.
Такое поведение будет разрешено, если:
— Другой экран вашего приложения уже на переднем плане
— Ваше приложение доступно в бэк стеке (т.е., грубо говоря, по нажатию на Back на устройстве пользователь может вернуться к экрану вашего приложения) задачи, которая сейчас на переднем плане
— Ваше приложение получило PendingIntent от системы или же от другого приложения, находящегося на переднем плане
— У приложения есть сервис, который прямо сейчас используется каким-либо другим приложением, находящемся на переднем плане
— Ну и ещё несколько других сценариев
Так вот. Наличие форэграунд сервиса НЕ УЧИТЫВАЕТСЯ само по себе. Раньше такой сервис снимал много разных ограничений, но не сейчас. Так что если вы создали этот сервис для выполнения какой-то очень длительной задачи и пользователь покинул ваше приложение, то высока вероятность, что вы не сможете поднять себя из фона по выполнению задачи. Если для вас это важно, используйте разрешённые варианты работы для этого сценария.
TL;DR: Андроид 10 будет давить адварей, которые поднимали свой экран из ниоткуда.
Чуть подробнее. В 10-ке будет ограничение, которое заденет всех, вне зависимости от targetAPI, которое будет запрещать приложению поднимать свой экран из ниоткуда на передний план. Этим злоупотребляли всякие адвари. И некоторые полезные приложения использовали это в своих сценариях.
Такое поведение будет разрешено, если:
— Другой экран вашего приложения уже на переднем плане
— Ваше приложение доступно в бэк стеке (т.е., грубо говоря, по нажатию на Back на устройстве пользователь может вернуться к экрану вашего приложения) задачи, которая сейчас на переднем плане
— Ваше приложение получило PendingIntent от системы или же от другого приложения, находящегося на переднем плане
— У приложения есть сервис, который прямо сейчас используется каким-либо другим приложением, находящемся на переднем плане
— Ну и ещё несколько других сценариев
Так вот. Наличие форэграунд сервиса НЕ УЧИТЫВАЕТСЯ само по себе. Раньше такой сервис снимал много разных ограничений, но не сейчас. Так что если вы создали этот сервис для выполнения какой-то очень длительной задачи и пользователь покинул ваше приложение, то высока вероятность, что вы не сможете поднять себя из фона по выполнению задачи. Если для вас это важно, используйте разрешённые варианты работы для этого сценария.
Всякий раз, когда я перехожу на новую мажорную версию Android, я делаю полный сброс. Потому что помню как выяснил, что при обновлении по воздуху с Android 4.4 на Android 5 часовой пояс Москвы оставался +4, а если прошить по шнуру с вайпом или просто вайпнуть после апгрейда, то часовой пояс становился +3.
И ведь это изменение, которое заметно глазами. А могут быть проблемы, не заметные сходу, но раздражающие и с неясной природой.
И ведь это изменение, которое заметно глазами. А могут быть проблемы, не заметные сходу, но раздражающие и с неясной природой.
Теперь система сообщает, что медиа канал погашен, когда медиа проигрывается. Beta 4
Приложения, не учитывающие системную тему в Android 10 выглядят чужеродно. К релизу ОС стоит поддержать эту фичу хотя бы на уровне Theme.AppCompat.DayNight.
Сейчас солнце и я включил светлую тему в системе, но почти все приложения остались в чёрной теме (у меня AMOLED). В итоге я вижу всё прекрасно в лончере и настройках, но ничего не вижу в сторонних приложениях.
Сейчас солнце и я включил светлую тему в системе, но почти все приложения остались в чёрной теме (у меня AMOLED). В итоге я вижу всё прекрасно в лончере и настройках, но ничего не вижу в сторонних приложениях.
Вот так сел учить Java по лекциям Mail.Ru а тебе говорят, что void возвращает булевы значения
https://dontkillmyapp.com/ Здесь собрана вся боль всех разработчиков и тестировщиков под Android.
https://android.googlesource.com/platform/frameworks/base/+/854060a%5E%21/
В старших версиях Android (7 и выше, вроде) появилась вот такая проверка, кто и как дёргает am (adb shell am). Вылилось это, кроме прочего, в то, что теперь через adb нельзя переводить время. Ну и в разное другое.
Если для тестов вам это всё-таки нужно, то используйте рутованные устройства и эмуляторы. НО! Собственно, ради чего я это пишу. Есть 3 типа образов эмуляторов (не считая типов процессоров): без гугла совсем, с Google API и с Google Play Services и Market. Вот в последнем просто нет su и потому для тестов, связанных с повышением привилегий, использовать этот образ не получится.
При прочих равных выбирайте образ с Google API.
В общем, как переводить время:
1. Отключаем автоматическую установку времени: adb shell settings put global auto_time 0 (1 для включения обратно)
1.1. Можно, но не обязательно, отключить автоматическую тайм зону: adb shell settings put global auto_time_zone 0 (1 для включения обратно)
1.2. Можно, но не обязательно, включить 24 часовой формат времени: adb shell settings put system time_12_24 24 (12 для формата AM/PM)
2. Проверяем версию Android
2.1. Если 22 и ниже (т.е. 5.1 и старее), то используем unix timestamp
2.2. Если 23 и выше (т.е. начиная с 6-ки), то используем формат MMDDHHmmCCYY. Месяц, день, часы, минуты, год. Всё, кроме года, двухчисловое, год — четыре числа. CC — это 20, YY — это 19, соотвественно вместе — 2019. Т.е. прямо сейчас 070810582019.
2.3. Если 24 и выше, то дополнительно нужно выставлять время от su. Об этом ниже
3. Выставляем время: adb shell [su 0] date NEW_TIME. Если это Android 7 и новее, то нужно добавить su 0. Аналогично и для следующей команды
4. Уведомляем систему, что время изменилось (если не хочется ждать целую минуту): adb shell [su 0] am broadcast -a android.intent.action.TIME_SET
Повторю, su вам доступен (безо всяких подтверждений действий в UI), только если это образ БЕЗ Play Services.
В старших версиях Android (7 и выше, вроде) появилась вот такая проверка, кто и как дёргает am (adb shell am). Вылилось это, кроме прочего, в то, что теперь через adb нельзя переводить время. Ну и в разное другое.
Если для тестов вам это всё-таки нужно, то используйте рутованные устройства и эмуляторы. НО! Собственно, ради чего я это пишу. Есть 3 типа образов эмуляторов (не считая типов процессоров): без гугла совсем, с Google API и с Google Play Services и Market. Вот в последнем просто нет su и потому для тестов, связанных с повышением привилегий, использовать этот образ не получится.
При прочих равных выбирайте образ с Google API.
В общем, как переводить время:
1. Отключаем автоматическую установку времени: adb shell settings put global auto_time 0 (1 для включения обратно)
1.1. Можно, но не обязательно, отключить автоматическую тайм зону: adb shell settings put global auto_time_zone 0 (1 для включения обратно)
1.2. Можно, но не обязательно, включить 24 часовой формат времени: adb shell settings put system time_12_24 24 (12 для формата AM/PM)
2. Проверяем версию Android
2.1. Если 22 и ниже (т.е. 5.1 и старее), то используем unix timestamp
2.2. Если 23 и выше (т.е. начиная с 6-ки), то используем формат MMDDHHmmCCYY. Месяц, день, часы, минуты, год. Всё, кроме года, двухчисловое, год — четыре числа. CC — это 20, YY — это 19, соотвественно вместе — 2019. Т.е. прямо сейчас 070810582019.
2.3. Если 24 и выше, то дополнительно нужно выставлять время от su. Об этом ниже
3. Выставляем время: adb shell [su 0] date NEW_TIME. Если это Android 7 и новее, то нужно добавить su 0. Аналогично и для следующей команды
4. Уведомляем систему, что время изменилось (если не хочется ждать целую минуту): adb shell [su 0] am broadcast -a android.intent.action.TIME_SET
Повторю, su вам доступен (безо всяких подтверждений действий в UI), только если это образ БЕЗ Play Services.
Интересное поведение Android 10, которое нужно будет учитывать.
Система показывает уведомление о том, что у некого приложения слишком широкие права на геолокацию.
В Beta 4 такого не было.
Система показывает уведомление о том, что у некого приложения слишком широкие права на геолокацию.
В Beta 4 такого не было.
И о плохом для конечного пользователя.
После Hard Reset приложения восстанавливаются с примерно теми же настройками (если разработчик это не запретил явно).
Так вот пермишен геолокацию после такого восстановления наследуется, но игнорируется «Только когда приложение на переднем плане». То есть если вы дали приложению разрешение на локацию вида «only while using the app», то при восстановлении после сброса настройка будет на «Allow all the time».
Возможно поведение выше — это костыль, пытающийся хоть как-то исправить ошибку неправильного восстановления прав.
После Hard Reset приложения восстанавливаются с примерно теми же настройками (если разработчик это не запретил явно).
Так вот пермишен геолокацию после такого восстановления наследуется, но игнорируется «Только когда приложение на переднем плане». То есть если вы дали приложению разрешение на локацию вида «only while using the app», то при восстановлении после сброса настройка будет на «Allow all the time».
Возможно поведение выше — это костыль, пытающийся хоть как-то исправить ошибку неправильного восстановления прав.
Если вдруг кто не знает, для Android 5.0 и новее есть классная утилита scrcpy: https://github.com/Genymobile/scrcpy
Утилита кросс-платформенная. Её суть — иметь на экране компьютера доступ к вашим реальным устройствам. Ну точно как с эмуляторами. На скриншоте у меня запущен эмулятор 5.1 и мой реальный Pixel 2
Для Linux можете поикать готовые пакеты в репозиториях, даже если на ГитХабе про это не сказано. К примеру вот для openSUSE: https://software.opensuse.org/package/scrcpy?search_term=scrcpy Только используйте не экспериментальный (он не работает сейчас, по крайней мере для 15.1), а комьюнити.
Утилита кросс-платформенная. Её суть — иметь на экране компьютера доступ к вашим реальным устройствам. Ну точно как с эмуляторами. На скриншоте у меня запущен эмулятор 5.1 и мой реальный Pixel 2
Для Linux можете поикать готовые пакеты в репозиториях, даже если на ГитХабе про это не сказано. К примеру вот для openSUSE: https://software.opensuse.org/package/scrcpy?search_term=scrcpy Только используйте не экспериментальный (он не работает сейчас, по крайней мере для 15.1), а комьюнити.
GitHub
GitHub - Genymobile/scrcpy: Display and control your Android device
Display and control your Android device. Contribute to Genymobile/scrcpy development by creating an account on GitHub.