TGINSIGHT CHAT
Android Broadcast
@android_broadcast
TechnologiesПодборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR
Posts récents
Tag : #activity · 2 posts
Publié 20 févr.
🤖Очередная порция ограничений для Activity в Android 17 Копался в behavior changes для Android 17 и наткнулся на очередное закручивание гаек вокруг запуска Activity из фона. На этот раз Google расширил BAL (Background Activity Launch) ограничения на IntentSender IntentSender - это обёртка над PendingIntent, позволяющая передать право запуска Intent другому приложению или системе. Именно через него работают уведомления, виджеты, shortcuts и межпроцессные вызовы. Так вот, константа MODE_BACKGROUND_ACTIVITY_START_ALLOWED теперь deprecated. Если где-то передаёте её через ActivityOptions при работе с PendingIntent — нужно мигрировать на MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE. Разница в том, что теперь Activity из фона запустится только если вызывающее приложение видимо пользователю. val options = ActivityOptions.makeBasic().apply { pendingIntentBackgroundActivityStartMode = ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE } Найти проблемные места просто — Google обновил lint и StrictMode под новые требования. Запускаете lint, ищете использования MODE_BACKGROUND_ACTIVITY_START_ALLOWED и получаете полный список того, что нужно поправить. Формально это касается только targetSdk 17+, но лучше не тянуть — сами знаете, как работают дедлайны в Play Console. 🔗Источник developer.android.com #Android17#androiddev#security#activity
Publié 13 mars
🚀Обновления Activity Embedding 👉Изменение размера панелей теперь поддерживается из коробки val splitAttributesBuilder: SplitAttributes.Builder = SplitAttributes.Builder() .setSplitType(SplitAttributes.SplitType.ratio(0.33f)) .setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT) if (WindowSdkExtensions.getInstance().extensionVersion >= 6) { splitAttributesBuilder.setDividerAttributes( DividerAttributes.DraggableDividerAttributes.Builder() .setColor(getColor(context, R.color.divider_color)) .setWidthDp(4) .setDragRange( DividerAttributes.DragRange.DRAG_RANGE_SYSTEM_DEFAULT) .build() ) } val splitAttributes: SplitAttributes = splitAttributesBuilder.build() 👉Управление затемнением интерфейса под диалогом диалога 👉Возможность закрепить Activity Task (набор Activity) по id в части экрана fun pinActivityStackExample(taskId: Int) { val splitAttributes: SplitAttributes = SplitAttributes.Builder() .setSplitType(SplitAttributes.SplitType.ratio(0.66f)) .setLayoutDirection(SplitAttributes.LayoutDirection.LEFT_TO_RIGHT) .build() val pinSplitRule = SplitPinRule.Builder() .setDefaultSplitAttributes(splitAttributes) .build() SplitController.getInstance(applicationContext) .pinTopActivityStack(taskId, pinSplitRule) } #jetpack#ui#material#activity