TGTGInsighttelegram intelligenceLIVE / telegram public index
← Android Broadcast
Android Broadcast avatar

TGINSIGHT POST

Post #9725

@android_broadcast

Android Broadcast

Vues7,000Nombre de vues
Publié5 déc.05/12/2025 06:07
Contenu

Contenu du post

🤖Android 16 QPR2: системный шаринг наконец стал интерактивным Раньше системный шузер для шаринга был «односторонним»: вы собрали Intent, отдали его в Intent.createChooser(...) — и дальше всё полностью контролирует система. После открытия sharesheet вы уже не можете: 👉 обновить текст или вложения; 👉 убрать/добавить таргеты; 👉 синхронизировать состояние с продолжающимся действием в приложении. Если пользователь что-то поменял (например, отредактировал текст или выбор вложений), приходилось закрывать шузер и открывать его заново. Не так давно была возможность изменить контент для шаринга из шузера (сделали похожим как в iOS), а также добавить действия. В Android 16 QPR2 / API 36.1 появился новый механизм — Interactive Chooser Sessions. Теперь приложение может держать живую сессию шаринга, обновлять её и получать события, пока открыт системный sharesheet. Для этого используются ChooserManager и ChooserSession. // Базовый пример: запуск интерактивной сессии (Kotlin) val chooserManager: ChooserManager = context.getSystemService() val shareIntent = Intent(Intent.ACTION_SEND).apply { type = "text/plain" putExtra(Intent.EXTRA_TEXT, "This is a message that will be shared.") } val chooserIntent = Intent.createChooser(shareIntent, null) val session: ChooserSession = chooserManager.startSession(context, chooserIntent) val token: ChooserSessionToken = session.token token можно сохранить в ViewModel или savedStateHandle, чтобы потом восстановить сессию после поворота экрана или пересоздания Activity. val existingToken: ChooserSessionToken = /* restore from state */ val existingSession: ChooserSession = chooserManager.getSession(existingToken) ?: return Управление сессией через ChooserSession API val executor: Executor = ContextCompat.getMainExecutor(context) session.addStateListener(executor, object : ChooserSession.StateListener { override fun onStateChanged(state: Int) { } override fun onBoundsChanged(bounds: Rect) { } }) Временное отключение таргетов на время долгой операции: session.setTargetsEnabled(false) val updatedShareIntent = Intent(Intent.ACTION_SEND).apply { type = "text/plain" putExtra(Intent.EXTRA_TEXT, "Updated message generated in runtime") } val updatedChooserIntent = Intent.createChooser(updatedShareIntent, null) session.updateIntent(updatedChooserIntent) session.setTargetsEnabled(true) // Завершение сессии, когда шаринг больше не нужен: session.endSession() #Android#Android16