TGINSIGHT CHAT
Android Broadcast
@android_broadcast
TechnologiesПодборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR
Posts récents
Tag : #android · 490 posts
Publié 25 févr.
Qualcomm продлевают поддержку Android до 8 лет! Новая инициатива Qualcomm и Google позволит устройствам на Snapdragon 8 Elite и будущих чипах получать обновления Android и патчи безопасности в течение 8 лет. Это огромный шаг вперёд для Android-экосистемы, повышая долговечность устройств и снижая затраты для OEM-производителей. Какие устройства получат поддержку? 👉 Смартфоны на Snapdragon 8 Elite с Android 15 👉 Будущие устройства на новых Snapdragon 8 и 7-й серии 👉 Включает 2 обновления ядра Android Common Kernel Однако финальное решение остаётся за производителями. Будут ли OEM-ы действительно поддерживать свои устройства так долго? Samsung уже делает 7 лет, Google столько же, но у них свои чипы. #Android#Qualcomm#Snapdragon
Hashtags
Publié 24 févr.
⚰️Amazon закрывает магазин приложений для Android C 20 февраля 2025 больше не принимаются новые публикации от разработчиков Обновления приложений можно загружать до 20 августа 2025 20 августа 2025 прекращается поддержка магазина на Android устройствах, но продолжит работать на Fire TV и Fire Tablet Amazon Appstore был запущен 22 марта 2011 года #android#amazon
Publié 24 févr.
🪙Настройка качества контроля кода в KMP проекте и автоматизация запуска проверок локально и на CI (40 мин) Продолжаю рассказывать про ход разработки KMP + Compose клиента для Frame.io. В новой части показываю как я настроил анализаторы кода: KtLint, Detekt, Gitleaks, Manifest Guard и другие, а также как стоит подходить к оптимизации скорости проверок локально и на CI. Полезно как для командных проектов, так и для ваших личных проектов (я бы тут даже сказал что еще важнее)! ✉️ Также видео доступно в Telegram (нужно оформить подписку) Список всех вышедших и планируемых видео тут #AndroidBroadcast#frameio#kmp#android#ios#качествокода
Publié 20 févr.
Чтобы оценить как ваше приложение поддерживает accesibility, то можете поставить приложение Accessibility Scanner #android#accessibility
Hashtags
Publié 20 févr.
Анализ Android-фич на доступность и внедрение accessibility в процесс разработки (7м) В статье Android-разработчик из VK рассказывает о совместной работе разработчиков и дизайнеров над повышением доступности контента для людей с ограниченными возможностями, использующих скринридеры. Были проанализированы различные фичи и предприняты шаги для обеспечения доступности функциональности. Ключевые моменты: 👉 Обеспечение корректной работы с фокусом в UI 👉 Единообразие навигации по элементам UI 👉 Добавление локализованных contentDescription, чтобы они озвучивались системой TalkBack #android#accessibility
Hashtags
Publié 19 févr.
🤖Новая защита от Intent Redirect в Android 16 Начиная с Android 16, система получила усиленную защиту от атак с редиректом Intent – механизма, с помощью которого злоумышленники могли подменять содержимое Intent для запуска приватных компонентов. Благодаря обновлению: 🔒 Защита по умолчанию: Система автоматически проверяет входящие Intent, снижая риск выполнения недоверенных операций. 🛠 Минимальные изменения для разработчиков: Большинство приложений, использующих стандартный механизм Intent, продолжат работать без проблем, однако рекомендуется протестировать проекты в новых условиях. 💡 Повышенная безопасность: Новые меры помогают предотвратить несанкционированный доступ к данным и выполнение привилегированных действий. #android#android16#безопасность
Hashtags
Publié 19 févr.
🤖 Шаринг ключей из Android Keystore с другими приложениями В Android 16 KeyStoreManager получил возможность поделиться ключами с другими приложениями на устройстве пользователя fun generateAndShareKey(targetUid: Int) { // Генерация нового ключа в Android Keystore val keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore") val keyGenSpec = KeyGenParameterSpec.Builder( KEY_ALIAS, KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT ) .setBlockModes(KeyProperties.BLOCK_MODE_GCM) .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE) .build() keyGenerator.init(keyGenSpec) val secretKey: SecretKey = keyGenerator.generateKey() // Предоставление доступа к ключу приложению с заданным UID val keyStoreManager = KeyStoreManager.getInstance() val granted = keyStoreManager.grant(KEY_ALIAS, targetUid) if (granted) { Log.d(TAG, "Доступ предоставлен UID: $targetUid") } else { Log.e(TAG, "Не удалось предоставить доступ UID: $targetUid") } } Пример отзыва доступа к ключу fun revokeKeyAccess(targetUid: Int) { // Отзыв доступа к ключу для приложения с заданным UID val keyStoreManager = KeyStoreManager.getInstance() val revoked = keyStoreManager.revoke(KEY_ALIAS, targetUid) if (revoked) { Log.d(TAG, "Доступ отозван для UID: $targetUid") } else { Log.e(TAG, "Не удалось отозвать доступ для UID: $targetUid") } } #android#android16#безопасность
Hashtags
Publié 19 févr.
🤖Форматируйте дату и время на основе настроек пользователя В большинстве приложений приходится выводить время и дату, но в каком формате сделать это правильнее всего? Логично использовать формат, который применяется для локали пользователя, но в настройках системы пользователь может указывать формат времени и даты для отображения, а значит, ему хотелось бы видеть такой формат везде. Используйте класс android.text.format.DateFormat (ВАЖНО не путать с одноименным классом из пакета java.text) // Получаем текущую дату и время val currentDate: Date = ... // Получаем форматтер для даты, который учитывает региональные настройки пользователя val dateFormatter: java.text.DateFormat = android.text.format.DateFormat.getDateFormat(context) // Форматируем дату val formattedDate = dateFormatter.format(currentDate) // Получаем форматтер для времени, который учитывает настройку 12/24-часового формата val timeFormatter = android.text.format.DateFormat.getTimeFormat(context) // Форматируем время val formattedTime = timeFormatter.format(currentDate) // Получение порядка дня, месяца, года, который определил пользователь // Например ['d', 'M', 'y'] val char[] = android.text.format.DateFormat.getDateFormatOrder(context) val is24Hour = android.text.format.DateFormat.is24HourFormat(context) // Выбираем шаблон форматирования времени val pattern = if (is24Hour) "HH:mm" else "hh:mm a" // Форматируем время согласно выбранному шаблону val formattedTime = DateFormat.format(pattern, currentDate) Такой подход позволяет пользователю работать со временем в привычном формате в вашем приложении, а вам не задумываться какой шаблон времени использовать для форматирования. Если вы не хотите работать со старым Date API, которое есть с самых первый версий Java, то можно получить шаблон для форматирования времени на основе настроек пользователя с помощью android.text.format.DateFormat.getBestDateTimePattern() // Получаем шаблон форматирования для времени. В данном случае шаблон "hm" используется для получения // подходящего шаблона, который учитывает настройки пользователя (12/24-часовой формат). val locale = Locale.getDefault() val pattern: String = android.text.format.DateFormat.getBestDateTimePattern(locale, "hm") // Создаем DateTimeFormatter из Java 9 Date Time API val dateTimeFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern(pattern, locale) // Пример форматирования текущего времени с использованием DateTimeFormatter val formattedTime: String = LocalTime.now().format(dateTimeFormatter) println("Отформатированное время: $formattedTime") #android#лучшиепрактики
Hashtags
Publié 18 févr.
31 марта 2025 закрывается App Center Многие знают App Center как удобный способ распространения сборок Android и iOS приложений #android#ios#microsoft
Hashtags
Publié 15 févr.
🛒Представили Play Service TrustedTime API Для тех приложений, которым важно получать настоящее время, а не то, что установлено на устройстве пользователем, всегда приходилось решать вопрос, откуда его взять. Теперь же появилось стандартизированное API. // Создаем клиента для работы с Trusted Time API val initializeTrustedTimeClientTask: Task = TrustedTime.createClient(activity) val trustedTimeClient: TrustedTimeClient = initializeTrustedTimeClientTask.await() val curTime: Long? = trustedTimeClient.computeCurrentUnixEpochMillis() // Используем системное время, если нет возможности получить из TrustedTime API // Может не подойти в вашем случае ?: System.currentTimeMillis() Поддерживается Android 5.0 и выше (SDK 21+) #google#gms#android
Publié 14 févr.
В региональных настройках Android 16 пользователь сможет менять метрическую систему Теперь разработчикам в зависимости от настроек рекомендуется форматировать размеры в приложениях, но вот API из коробки для того не дали. #android#android16
Hashtags
Publié 14 févr.
🤖Включение Edge-to-edge для всех приложений без возможности выключения В Android 15 есть флаг R.attr#windowOptOutEdgeToEdgeEnforcement, который позволял отключить для приложения "обязательное" включение Edge-to-Edge. В Android 16 флаг помечен как устаревший (deprecated) и система его игнорирует, а значит для вашего приложения включится режим отображения от края до края экрана. #android#android16#edgetoedge
Hashtags