{"id":5170,"date":"2026-09-29T07:07:33","date_gmt":"2026-09-29T07:07:33","guid":{"rendered":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/"},"modified":"2026-09-29T07:07:33","modified_gmt":"2026-09-29T07:07:33","slug":"build-intelligent-android-apps-in-app-agentic-workflows","status":"publish","type":"post","link":"https:\/\/dev95.site\/ar\/build-intelligent-android-apps-in-app-agentic-workflows\/","title":{"rendered":"Build intelligent Android apps: In-app agentic workflows"},"content":{"rendered":"<div id=\"dev95-2823283078\" class=\"dev95-- dev95-entity-placement\"><script async=\"async\" data-cfasync=\"false\" src=\"https:\/\/pl27862732.profitableratecpmnetwork.com\/2ad7a50e0bbc23ac6801d7b77c501463\/invoke.js\"><\/script>\r\n<div id=\"container-2ad7a50e0bbc23ac6801d7b77c501463\"><\/div><\/div><div><meta content=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhpYNWhjTRYuGX2C-P6Og2DjBVigoK6Vb2bqRy90_7JiTYZzzpHwmncA1f-A5t_KwuiK8UTAn3ilbSAUOF82oZyKFmA6xL6Xd2bOsbonI5IgAws-igxFhSk1clu-snV0jKL4o8uSa5Kx2VnLNDnhgD8IdSLAFtIQv6ILSPAVBj1tQtCB6n-4GzwCztAcSM\/s2469\/0817 Booking assistant agentic cloud_Meta.png\" property=\"og:image\"><br \/>\n<img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhpYNWhjTRYuGX2C-P6Og2DjBVigoK6Vb2bqRy90_7JiTYZzzpHwmncA1f-A5t_KwuiK8UTAn3ilbSAUOF82oZyKFmA6xL6Xd2bOsbonI5IgAws-igxFhSk1clu-snV0jKL4o8uSa5Kx2VnLNDnhgD8IdSLAFtIQv6ILSPAVBj1tQtCB6n-4GzwCztAcSM\/s2469\/0817%20Booking%20assistant%20agentic%20cloud_Meta.png?w=1280&#038;ssl=1\" style=\"display: none;\"><br \/>\nPosted by Jolanda Verhoef, Senior Developer Relations Engineer, Android Developer Relations<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgivKU3fiPeH6rTfF4axmW3lsZgs4SErqKy8HYuDc6P9uSqt3POXmwrSdlqOu7TKlcjxZjAXVC46650ES4uzQMfnFg_0B60qOT2h9xrOnvq8lag33DCC-CRR3wLzHv5IXJy_zTpOxd0tBZHuUX5Rs-5CbHYAZz_zGK3W9Zcdf5QUNAIGgJcTI6xMFvWzJA\/s8583\/0817%20Booking%20assistant%20agentic%20cloud_Blog.png?ssl=1\" style=\"clear: left; float: left; margin-bottom: 1em; margin-right: 1em;\"><img data-recalc-dims=\"1\" decoding=\"async\" border=\"0\" data-original-height=\"2601\" data-original-width=\"8583\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgivKU3fiPeH6rTfF4axmW3lsZgs4SErqKy8HYuDc6P9uSqt3POXmwrSdlqOu7TKlcjxZjAXVC46650ES4uzQMfnFg_0B60qOT2h9xrOnvq8lag33DCC-CRR3wLzHv5IXJy_zTpOxd0tBZHuUX5Rs-5CbHYAZz_zGK3W9Zcdf5QUNAIGgJcTI6xMFvWzJA\/s1600\/0817%20Booking%20assistant%20agentic%20cloud_Blog.png?w=1280&#038;ssl=1\"><\/a><\/div>\n<p><\/p>\n<div><\/p><div id=\"dev95-1094020655\" class=\"dev95- dev95-entity-placement\"><center>\r\n<script>\r\n  atOptions = {\r\n    'key' : '4ba6b6513c00e0ba76511f798ae56401',\r\n    'format' : 'iframe',\r\n    'height' : 50,\r\n    'width' : 320,\r\n    'params' : {}\r\n  };\r\n<\/script>\r\n<script src=\"https:\/\/www.highrevenueformat.com\/4ba6b6513c00e0ba76511f798ae56401\/invoke.js\"><\/script>\r\n\t<\/center><\/div>\n<p>Welcome back to the blog post series &#8220;Build intelligent Android apps&#8221; where you take a basic Android app and transform it into a personalized, intelligent, and agentic experience. In our <a href=\"https:\/\/android-developers.googleblog.com\/2026\/07\/build-intelligent-android-apps-appfunctions.html\">previous post<\/a> you learned how to connect to the intelligence system using AppFunctions.<\/p>\n<p>In this post, you will learn how to build autonomous <b>in-app agentic workflows<\/b> running in the cloud.<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n  <iframe loading=\"lazy\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen=\"\" class=\"BLOG_video_class\" frameborder=\"0\" height=\"266\" src=\"https:\/\/www.youtube.com\/embed\/_iuXykdlTkk\" style=\"aspect-ratio: 16 \/ 9; border: none; display: block; height: auto; width: 100%;\" title=\"YouTube video player\" width=\"320\"><br \/>\n  <\/iframe>\n<\/div>\n<p>Sometimes a task is too complex for a single device session. For example, booking a complete holiday itinerary involves coordinating flight times, selecting hotel rooms, reserving museum tickets, and planning restaurant reservations. If you run this multi-step process directly on a mobile device, the app might get closed and lose your progress. Managing all these steps and API credentials on a phone also gets complicated quickly.<\/p>\n<p>For these long-running, multi-step workflows, you can use a custom self-hosted backend. The backend executes the booking agents in the background, while the Android app connects to the session, visualizes the progress, and requests user input only when necessary.<\/p>\n<p>Using a cloud-hosted agentic backend offers a few advantages:<\/p>\n<\/p>\n<ul style=\"text-align: left;\">\n<li><b>Background execution: <\/b>Booking agents run autonomously in the cloud, so progress is never lost if the mobile app goes to the background or loses internet connectivity.<\/li>\n<li><b><br \/>\nComplex multi-agent orchestration:<\/b> A coordinator agent can delegate bookings to specialized subagents and handle dependencies between them.<\/li>\n<li><b><br \/>\nClient-agnostic UI rendering: <\/b>The backend describes the interface structure dynamically, letting you update the UI layout without releasing a new client version.<\/li>\n<\/ul>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjNa-v7A2ABn7qHN9E-obrjwyUAuku-TvoFIU6mLjHxZ2zwZuS2VN13fXueh7yS9yY6dk8eupV_aMgbuhG2QpyRgvktuag6nPYw21suWq-tGEveeP3V9jYrowOsFrcLws3egM9Ozi-FYhyphenhyphenuesH60KrapEKxngThe7Sf1tTpAyi3ToqlsP1Jwrf7z0UhZ44\/s1668\/Screenshot%202026-09-24%20at%2011.09.35%E2%80%AFAM.png?ssl=1\" style=\"margin-left: 1em; margin-right: 1em;\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"1668\" data-original-width=\"896\" height=\"400\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjNa-v7A2ABn7qHN9E-obrjwyUAuku-TvoFIU6mLjHxZ2zwZuS2VN13fXueh7yS9yY6dk8eupV_aMgbuhG2QpyRgvktuag6nPYw21suWq-tGEveeP3V9jYrowOsFrcLws3egM9Ozi-FYhyphenhyphenuesH60KrapEKxngThe7Sf1tTpAyi3ToqlsP1Jwrf7z0UhZ44\/w215-h400\/Screenshot%202026-09-24%20at%2011.09.35%E2%80%AFAM.png?resize=215%2C400&#038;ssl=1\" width=\"215\"><\/a><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><i>The booking assistant shows all booking progress, organized by event type.<\/i><\/div>\n<p>With these benefits in mind, we added a <b>Booking Assistant <\/b>to <a href=\"https:\/\/android-developers.googleblog.com\/2026\/07\/build-intelligent-android-apps-introduction-jetpack.html\">Jetpacker<\/a> that coordinates flights, hotels, museums, and restaurant reservations. Let&#8217;s look at how we orchestrated a multi-agent system powered by the Agent Development Kit (ADK), with the Agent-User Interaction protocol(AG-UI) and Agent-to-User Interface protocol (A2UI) to send and display interactive cards natively in Jetpack Compose.<\/p>\n<\/p>\n<h3 style=\"text-align: left;\">Powering complex workflows with ADK agents<\/h3>\n<p>Rather than coordinating the orchestration flow manually using custom REST endpoints or complex web sockets, you can use the <b><a href=\"http:\/\/adk.dev\/\">Agent Development Kit (ADK)<\/a><\/b>. With ADK, you can define agents and equip them with python function tools to query databases and execute bookings.<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgY6IiKGjUY3WJdlgTOgeHcogIeKdxuziERDbxEtw2vcZ29yB-skCjhxSvhZ8HGDD_TbQ7SDTt1ugXRq1uYaza2FfeTMs9m4dMzcx5rIUrskMDgHqW5QZHvitpQUhQxXMaCF708k7hwrWl9GjFqhHnQ7AZPH5Gpj0b0YqULJJ5sGQ1J0sqVI5kfPn_Pgmc\/s1434\/diagram.png?ssl=1\" style=\"clear: left; float: left; margin-bottom: 1em; margin-right: 1em;\"><img data-recalc-dims=\"1\" decoding=\"async\" border=\"0\" data-original-height=\"618\" data-original-width=\"1434\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgY6IiKGjUY3WJdlgTOgeHcogIeKdxuziERDbxEtw2vcZ29yB-skCjhxSvhZ8HGDD_TbQ7SDTt1ugXRq1uYaza2FfeTMs9m4dMzcx5rIUrskMDgHqW5QZHvitpQUhQxXMaCF708k7hwrWl9GjFqhHnQ7AZPH5Gpj0b0YqULJJ5sGQ1J0sqVI5kfPn_Pgmc\/s1600\/diagram.png?w=1280&#038;ssl=1\"><\/a><\/div>\n<p><i><\/p>\n<div style=\"text-align: center;\"><i>The Android app sends the current trip itinerary data to the server. The coordinator agent chooses which subagents to trigger. Each subagent provides its results to a shared session queue that streams the results back to the Android app.<\/i><\/div>\n<p><\/i><\/p>\n<p>Here is how to define a simple agent and run it using ADK:<\/p>\n<pre><code># android\/booking-server\/booking_server.py\n\n# Note: ADK supports many different coding languages. For now, use the Python version as it includes support for A2UI which we'll use later in this blog post.\n\nfrom google.adk import Agent\nfrom google.adk.runners import InMemoryRunner\nfrom google.adk.tools import FunctionTool\n\n# Define custom tools to interact with database\ndef search_flights(destination: str, date: str) -&gt; list[str]:\n    # In production, here you would query our flight database and return dynamic results\n    return [\"10:00 AM\", \"2:00 PM\"]\n\ndef reserve_flight(flight_time: str) -&gt; str:\n    # In production, here you would save the reservation transaction\n    return \"Reserved flight at \" + flight_time\n\n# Instantiate the booking agent with specialized tools\nflight_agent = Agent(\n    name=\"Flight Booker\",\n    model=\"gemini-3.1-flash-lite\",\n    instruction=\"Help the user search for flights and book a reservation.\",\n    tools=[\n        FunctionTool(search_flights),\n        FunctionTool(reserve_flight, require_confirmation=True)\n    ]\n)\n\n# Run the agent in memory using a session ID\nrunner = InMemoryRunner(flight_agent)\nasync for event in runner.run_async(user_id=user_id, session_id=session_id):\n    if event.content:\n        print(\"Agent said:\", event.content)\n<\/code><\/pre>\n<p>When you run an agent using this setup, ADK manages the execution steps for you. It automatically tracks the conversation context, routes messages between the user and the model, and executes the registered tools when the model requests them. This allows you to focus on writing clean procedural logic while the framework handles the orchestration in the background.<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><img data-recalc-dims=\"1\" decoding=\"async\" border=\"0\" data-original-height=\"1752\" data-original-width=\"2824\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEj9K36QnRp431YcN0t3GZhffLYrhIzePms96XdeuOFguDDTSsX8o6VKwRpULD5l-nJ6jqBKSVZ9Vdu4MZ549I5PM-B-9pWY72zXT53SkRGZVNDkdOEl0zD5PAzqwo5lEOktYIvugUQKtmI9qqs_niZ38LTMWc6YdmD3q_pHWi1YjGGE4EJsMot7yhLQVkI\/s1600\/web_debug.png?w=1280&#038;ssl=1\"><i>The ADK web interface shows how you can have a conversation with the multi-agent booking system.<\/i><\/div>\n<p>To connect this backend agent to our Jetpacker app, the server needs a way to stream updates in real time to the device, which is handled using the <b>AG-UI protocol<\/b>. The agent also needs a structured way to describe and update interactive components (like option selectors and seating grids) dynamically on the phone, which is where the <b>A2UI protocol<\/b> comes in.<\/p>\n<\/p>\n<h3 style=\"text-align: left;\">Standardizing agent-client communication with AG-UI<\/h3>\n<p>Running agents in the cloud and rendering UI on Android requires a standard communication channel. For this, you will use the <a href=\"https:\/\/ag-ui.com\/\">AG-UI<\/a> protocol.<\/p>\n<p>AG-UI is a bidirectional transport layer protocol that standardizes message types between agents and UI clients. The agent can inform the client of lifecycle events, text messages, tool calls, and state management. The client, in turn, can send user text messages, tool call results, and custom action events back to the agent.<\/p>\n<p>On the server side, it yields updates formatted as standard Server-Sent Events (like <code>event: TEXT_MESSAGE_CONTENT<\/code> containing the JSON delta). On Android, the Kotlin SDK listens to this stream and automatically maps the payloads to type-safe client events:<\/p>\n<pre><code>\/\/ https:\/\/github.com\/android\/ai-samples\/tree\/main\/jetpacker\/android\/feature\/trip\/booking_assistant\/src\/main\/kotlin\/com\/example\/jetpacker\/feature\/booking_assistant\/BookingAssistantViewModel.kt\nimport com.agui.client.agent.HttpAgent\nimport com.agui.client.agent.HttpAgentConfig\nimport com.agui.core.types.RunAgentInput\nimport com.agui.core.types.UserMessage\nimport com.agui.core.types.TextMessageStartEvent\nimport com.agui.core.types.TextMessageContentEvent\nimport com.agui.core.types.TextMessageEndEvent\n\nval config = HttpAgentConfig(\n    agentId = \"booking-assistant\",\n    threadId = threadId,\n    url = \"https:\/\/&lt;your-backend-url&gt;\"\n)\nval agent = HttpAgent(config, httpClient)\n\n\/\/ Set up the input with the session thread and user instruction\nval input = RunAgentInput(\n    threadId = threadId,\n    runId = runId,\n    messages = listOf(UserMessage(\"Book a flight to Paris\"))\n)\n\n\/\/ Run the agent flow and collect lifecycle events\nagent.runAgentObservable(input)\n    .collect { event -&gt;\n        when (event) {\n            is TextMessageStartEvent -&gt; { \/* ... *\/ }\n            is TextMessageContentEvent -&gt; { \/* ... *\/ }\n            is TextMessageEndEvent -&gt; {\n                \/\/ Handle the completed message\n            }\n        }\n    }\n<\/code><\/pre>\n<p>You can then write a UI to render these different types of standardized AG-UI events. This will give you the prototypical &#8220;Chatbot&#8221; experience:<\/p>\n<p><\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><i><\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgDYF-5x9o0qJV89ryt5EEoHZ2D7gGalaWmFcj1V9ZUqHGRNZ2Qe3iGwr1NUgq4L-PW-PK2rH8cQQXdrAgsmbqDQajlb33IS97njpAtHS5cLLwSj7xklY1MizbJNasLicgFjQlI_NpG76xWML1Zi0Rr7eMPRYyYX65V2Y7iQgv4bG2gsRNvBHhtB8iaAPM\/s1920\/manage_bookings_coorect.png?ssl=1\" style=\"margin-left: 1em; margin-right: 1em;\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"1920\" data-original-width=\"918\" height=\"400\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgDYF-5x9o0qJV89ryt5EEoHZ2D7gGalaWmFcj1V9ZUqHGRNZ2Qe3iGwr1NUgq4L-PW-PK2rH8cQQXdrAgsmbqDQajlb33IS97njpAtHS5cLLwSj7xklY1MizbJNasLicgFjQlI_NpG76xWML1Zi0Rr7eMPRYyYX65V2Y7iQgv4bG2gsRNvBHhtB8iaAPM\/w191-h400\/manage_bookings_coorect.png?resize=191%2C400&#038;ssl=1\" width=\"191\"><\/a><\/div>\n<p>A basic interface that lets a user chat with an assistant.<\/i><\/div>\n<\/p>\n<h3 style=\"text-align: left;\">Letting the agent speak UI with A2UI<\/h3>\n<p>Traditional chatbots typically return plain text or custom JSON payloads. When building complex interfaces, the client application has to parse these payloads and map them to specific, pre-built screens. This creates a dependency: every time you add a new feature, change the layout, or support a new user interaction, you have to update both the backend agent and the mobile application. This requires publishing an app update and waiting for users to install it.<\/p>\n<p>To solve this, use the <a href=\"http:\/\/a2ui.org\/\">A2UI<\/a> protocol. A2UI allows agents to describe the UI components to render on the client dynamically. The client app declares a catalog of components it supports, and the server sends a JSON payload specifying the component layout and properties:<\/p>\n<pre><code>{\n  \"version\": \"v0.9\",\n  \"updateComponents\": {\n    \"surfaceId\": \"Flight Reservation\",\n    \"components\": [\n      {\n        \"id\": \"flight_option_picker\",\n        \"component\": \"InteractiveOptionPicker\",\n        \"properties\": {\n          \"prompt\": \"Select a flight time:\",\n          \"options\": [\n            \"10:00 AM\",\n            \"2:00 PM\"\n          ],\n          \"selectedIdx\": null,\n          \"confirmBtnText\": \"Confirm Flight\"\n        }\n      }\n    ]\n  }\n}\n<\/code><\/pre>\n<p>The server specifies which catalog components to render along with their active property values, cleanly decoupling the client&#8217;s visual implementation details from the agent&#8217;s workflow state.<\/p>\n<\/p>\n<h3 style=\"text-align: left;\">Designing the backend UI schema<\/h3>\n<p>For the agent to generate these JSON payloads correctly, it needs to know which components are available and what properties they accept.<\/p>\n<p>To do this, use the <a href=\"https:\/\/adk.dev\/integrations\/a2ui\/\">ADK A2UI integration<\/a>. Instead of manually writing prompt instructions for every component in our catalog, the <a href=\"https:\/\/github.com\/a2ui-project\/a2ui\/blob\/v0.9\/agent_sdks\/python\/src\/a2ui\/core\/schema\/manager.py#L28\">A2uiSchemaManager<\/a> compiles their JSON schemas and layout instructions directly into the system prompt. This ensures the model learns the exact structure and formatting rules it must follow to generate valid A2UI payloads:<\/p>\n<pre><code># android\/booking-server\/booking_server.py\nfrom a2ui.schema.manager import A2uiSchemaManager\nfrom a2ui.schema.constants import VERSION_0_9\nfrom a2ui.schema.catalog import CatalogConfig\nfrom a2ui.basic_catalog.provider import BasicCatalog\n\n# Initialize A2UI Schema Manager with custom booking component catalog\nschema_manager = A2uiSchemaManager(\n    version=VERSION_0_9,\n    catalogs=[\n        BasicCatalog.get_config(version=VERSION_0_9),\n        CatalogConfig.from_path(\n            name=\"https:\/\/example.com\/catalogs\/booking_assistant\/v1\/catalog.json\",\n            catalog_path=\"booking_catalog.json\"\n        )\n    ]\n)\n\n# Compile prompt instructions including the A2UI JSON schema\nA2UI_SYSTEM_INSTRUCTION = schema_manager.generate_system_prompt(\n    role_description=\"You are a helpful travel booking assistant.\",\n    ui_description=\"Use InteractiveOptionPicker for choices, SeatSelectionPicker for seat selection...\",\n    include_schema=True,\n    include_examples=True,\n    allowed_components=[\"InteractiveOptionPicker\", \"SeatSelectionPicker\", \"BookingStatus\"]\n)\n<\/code><\/pre>\n<p>With this generated system instruction, the LLM is grounded in the schema layout and knows exactly how to formulate component updates that the Android client is capable of rendering.<\/p>\n<\/p>\n<h3 style=\"text-align: left;\">Natively rendering A2UI with Jetpack Compose<\/h3>\n<p>To render these component trees natively on Android, use the new Jetpack Compose A2UI Renderer library.<\/p>\n<p>First, add the dependencies to our module&#8217;s <code>build.gradle.kts<\/code> file:<\/p>\n<pre><code>\/\/ android\/feature\/trip\/booking_assistant\/build.gradle.kts\ndependencies {\n    implementation(\"androidx.a2ui:a2ui-model:1.0.0-alpha01\")\n    implementation(\"androidx.a2ui.compose:compose-runtime:1.0.0-alpha01\")\n    implementation(\"androidx.a2ui.compose:compose-ui:1.0.0-alpha01\")\n    implementation(\"androidx.compose.material3:material3-a2ui:1.0.0-alpha01\")\n}\n<\/code><\/pre>\n<p>Each component class in the catalog (such as <code>BookingStatusComponent<\/code>) defines how to map the properties received from the JSON payload into a Jetpack Compose composable function.<\/p>\n<p>Register the custom components in a catalog:<\/p>\n<pre><code>\/\/ android\/feature\/trip\/booking_assistant\/src\/main\/kotlin\/com\/example\/jetpacker\/feature\/booking_assistant\/CustomBookingAssistantCatalog.kt\n\nimport androidx.a2ui.compose.ui.A2uiCatalog\n\nfun bookingAssistantCatalog(): A2uiCatalog {\n    return A2uiCatalog(\n        catalogId = \"https:\/\/example.com\/catalogs\/booking_assistant\/v1\/catalog.json\",\n        components = listOf(\n            InteractiveOptionPickerComponent(),\n            SeatSelectionPickerComponent(),\n            BookingStatusComponent()\n        )\n    )\n}\n<\/code><\/pre>\n<p>Tip: Jetpacker implements custom components (<code>InteractiveOptionPicker<\/code>, <code>SeatSelectionPicker<\/code>, <code>BookingStatus<\/code>) tailored for booking flows. If your agent uses standard elements (such as text, cards, buttons, rows, columns, checkboxes, and date-time pickers), <code>material3-a2ui<\/code> also provides <code>materialA2uiBasicCatalogV1(...)<\/code>, giving you ready-to-use Material 3 implementations without writing any custom components.<\/p>\n<p>Note: To keep the backend and mobile client aligned, both rely on the same catalog definition ID (<code>https:\/\/example.com\/catalogs\/booking_assistant\/v1\/catalog.json<\/code>). If you add or modify properties on the backend catalog, you must increase the version number, and update the matching Kotlin component class to prevent parsing errors.<\/p>\n<p>In the <code>BookingAssistantViewModel<\/code>, process the A2UI messages using the <code>A2uiMessageProcessor<\/code> and update our active surfaces:<\/p>\n<pre><code>\/\/ android\/feature\/trip\/booking_assistant\/src\/main\/kotlin\/com\/example\/jetpacker\/feature\/booking_assistant\/BookingAssistantViewModel.kt\nimport androidx.lifecycle.ViewModel\nimport androidx.a2ui.model.processor.A2uiSurfaceModel\nimport androidx.a2ui.compose.ui.A2uiMessageProcessor\nimport kotlinx.coroutines.flow.StateFlow\n\nclass BookingAssistantViewModel : ViewModel() {\n    private val messageProcessor = A2uiMessageProcessor(\n        catalogs = listOf(bookingAssistantCatalog())\n    )\n    val activeSurfaces: StateFlow&lt;List&lt;A2uiSurfaceModel&gt;&gt; = messageProcessor.activeSurfaces\n    \n    init {\n        viewModelScope.launch(Dispatchers.Default) { processor.collectMessages() }\n    }\n\n    \/\/ ...\n}\n<\/code><\/pre>\n<p>In the Compose screen, collect these surfaces and render each one using the official <code>A2uiSurface<\/code> composable from <code>androidx.compose.material3:material3-a2ui<\/code>. A2uiSurface automatically handles reactive component state observation, Material 3 loading indicators, error fallbacks, and animated transitions between updates:<\/p>\n<pre><code>\/\/ android\/feature\/trip\/booking_assistant\/src\/main\/kotlin\/com\/example\/jetpacker\/feature\/booking_assistant\/BookingAssistantScreen.kt\nimport androidx.compose.runtime.Composable\nimport androidx.compose.runtime.collectAsState\nimport androidx.compose.foundation.lazy.LazyColumn\nimport androidx.compose.foundation.lazy.items\nimport androidx.compose.material3.a2ui.A2uiSurface\n\n@Composable\nfun BookingAssistantScreen(\n    viewModel: BookingAssistantViewModel,\n    modifier: Modifier = Modifier\n) {\n    val activeSurfaces by viewModel.activeSurfaces.collectAsState()\n    LazyColumn(\n        modifier = modifier.fillMaxWidth(),\n        verticalArrangement = Arrangement.spacedBy(16.dp)\n    ) {\n        items(activeSurfaces) { surfaceModel -&gt;\n            Card(modifier = Modifier.fillMaxWidth()) {\n                A2uiSurface(\n                    surfaceModel = surfaceModel,\n                    modifier = Modifier.fillMaxWidth().wrapContentHeight()\n                )\n            }\n        }\n    }\n}\n<\/code><\/pre>\n<p>You will now see several UI surfaces generated by our agent running in the backend:<\/p>\n<\/p>\n<h3 style=\"text-align: left;\">\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><a href=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjQgFRW4h1qhdJe0jeRChMnUSiwHS8tWquXGQCeuH5iFjijPurcGpuIIi3fHNailbnxXbYWYVk2Kj-_aGXHM0uWlwkk8ASaoPoT7LLWyTKHV_H-SBl_5C6we45UAcmlUfucc-kRiSQCSX8uiukgzg9BPSfsW48Skff4OkcuyIudgShLCo53XyrGySXhJsc\/s1668\/Screenshot%202026-09-24%20at%2011.09.35%E2%80%AFAM.png?ssl=1\" style=\"margin-left: 1em; margin-right: 1em;\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"1668\" data-original-width=\"896\" height=\"400\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjQgFRW4h1qhdJe0jeRChMnUSiwHS8tWquXGQCeuH5iFjijPurcGpuIIi3fHNailbnxXbYWYVk2Kj-_aGXHM0uWlwkk8ASaoPoT7LLWyTKHV_H-SBl_5C6we45UAcmlUfucc-kRiSQCSX8uiukgzg9BPSfsW48Skff4OkcuyIudgShLCo53XyrGySXhJsc\/w215-h400\/Screenshot%202026-09-24%20at%2011.09.35%E2%80%AFAM.png?resize=215%2C400&#038;ssl=1\" width=\"215\"><\/a><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><i style=\"font-size: medium; font-weight: 400;\">A well-designed booking assistant that relies on UI instead of text to interact with the user.<\/i><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\"><i style=\"font-size: medium; font-weight: 400;\"><br \/><\/i><\/div>\n<p>Bringing it all together<\/h3>\n<p>By hosting agent workflows in the cloud and using the AG-UI and A2UI protocols together, we can build dynamic, native Android interfaces driven directly by AI models. AG-UI establishes the real-time bidirectional streaming channel for messages and lifecycle events, while A2UI enables the cloud agent to dynamically describe interactive UI components, keeping the client application perfectly decoupled from the step-by-step backend orchestration logic.<\/p>\n<p>Check out the full source code for <a href=\"https:\/\/github.com\/android\/ai-samples\/tree\/main\/jetpacker\">Jetpacker on GitHub<\/a>, and watch the video <a href=\"https:\/\/www.youtube.com\/watch?v=_iuXykdlTkk\">Build Intelligent Android apps with Google\u2019s AI<\/a> to learn more about how to integrate agentic workflows directly into your app.<\/p>\n<\/p>\n<p>Check out the other parts of this blog post series:<br \/>\n\u25aa\ufe0f <a href=\"https:\/\/android-developers.googleblog.com\/2026\/07\/build-intelligent-android-apps-introduction-jetpack.html\">Part 1<\/a>: Introduction of the app and a high-level overview.<br \/>\n\ud83d\udcf1 <a href=\"https:\/\/android-developers.googleblog.com\/2026\/07\/android-on-device-inference.html\">Part 2<\/a>: On-device intelligence. Dive deep into ML Kit\u2019s GenAI APIs and Gemini Nano to build privacy-first features like itinerary summarization, receipt parsing, and local audio processing.<br \/>\n\u2601\ufe0f <a href=\"https:\/\/android-developers.googleblog.com\/2026\/07\/build-intelligent-android-apps-cloud-hybrid-inference.html\">Part 3<\/a>: Hybrid and cloud reasoning. Explore how to use Firebase AI Logic to ground LLM answers in real-world data like Google Maps and web context.<br \/>\n\u2699\ufe0f <a href=\"https:\/\/android-developers.googleblog.com\/2026\/07\/build-intelligent-android-apps-appfunctions.html\">Part 4<\/a>: System integration. Integrating with the Android intelligence system using AppFunctions.<br \/>\n\ud83e\udd16 Part 5 (this post!): In-app agentic workflows. Extend the app with end-to-end booking assistants powered by A2UI and ADK.<\/p>\n<p>Interested in more on Android Development? Follow Android Developers on <a href=\"https:\/\/www.youtube.com\/@AndroidDevelopers\">YouTube<\/a> or <a href=\"https:\/\/www.linkedin.com\/showcase\/androiddev\/\">LinkedIn<\/a>!<\/p>\n<p>All code snippets in this blog post follow the following copyright notice:<\/p>\n<pre><code>Copyright 2026 Google LLC.<br>\nSPDX-License-Identifier: Apache-2.0<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_5170\" class=\"pvc_stats total_only  \" data-element-id=\"5170\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewBox=\"0 0 502 315\" preserveAspectRatio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/i0.wp.com\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif?resize=16%2C16&#038;ssl=1\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Posted by Jolanda Verhoef, Senior Developer Relations Engineer, Android Developer Relations Welcome back to the blog post series &#8220;Build intelligent Android apps&#8221; where you take a basic Android app and transform it into a personalized, intelligent, and agentic experience. In<\/p>\n<div class=\"hosteria-entry-more\"><a href=\"https:\/\/dev95.site\/ar\/build-intelligent-android-apps-in-app-agentic-workflows\/\" class=\"no-underline font-light  group-hover:text-primary-800 dark:group-hover:text-primary-300 py-1\">Read more &gt;&gt;&gt;<\/a><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_5170\" class=\"pvc_stats total_only\" data-element-id=\"5170\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewbox=\"0 0 502 315\" preserveaspectratio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=\"0\" \/><\/p>\n<div class=\"pvc_clear\"><\/div>","protected":false},"author":1,"featured_media":5181,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fp_fajr_begins":"","fp_fajr_iqamah":"","fp_dhuhr_begins":"","fp_dhuhr_iqamah":"","fp_asr_begins":"","fp_asr_iqamah":"","fp_maghrib_begins":"","fp_maghrib_iqamah":"","fp_isha_begins":"","fp_isha_iqamah":"","fp_midnight":"","fp_midnight_name":"","fp_sunrise":"","fp_single_prayer_begins_title":"","fp_single_prayer_iqamah_title":"","fp_prayer_times_for_today":"","fp_hijra_date":"","fp_fajr_name":"","fp_dhuhr_name":"","fp_asr_name":"","fp_maghrib_name":"","fp_isha_name":"","fp_sunrise_name":"","fp_currentDate":"","fp_current_time":"","fp_current_title":"","fp_current_location":"","fp_masjid_name":"","fp_prayer_title":"","fp_next_prayer_iqamah_time":"","fp_next_prayer_iqamah_title":"","fp_next_prayer_begins_time":"","fp_next_prayer_begins_title":"","fp_next_prayer_title":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[9],"tags":[],"class_list":["post-5170","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android"],"a3_pvc":{"activated":true,"total_views":0,"today_views":0},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Build intelligent Android apps: In-app agentic workflows - Dev95<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dev95.site\/ar\/build-intelligent-android-apps-in-app-agentic-workflows\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build intelligent Android apps: In-app agentic workflows - Dev95\" \/>\n<meta property=\"og:description\" content=\"Posted by Jolanda Verhoef, Senior Developer Relations Engineer, Android Developer Relations Welcome back to the blog post series &#8220;Build intelligent Android apps&#8221; where you take a basic Android app and transform it into a personalized, intelligent, and agentic experience. InRead more &gt;&gt;&gt;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dev95.site\/ar\/build-intelligent-android-apps-in-app-agentic-workflows\/\" \/>\n<meta property=\"og:site_name\" content=\"Dev95\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-29T07:07:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgY6IiKGjUY3WJdlgTOgeHcogIeKdxuziERDbxEtw2vcZ29yB-skCjhxSvhZ8HGDD_TbQ7SDTt1ugXRq1uYaza2FfeTMs9m4dMzcx5rIUrskMDgHqW5QZHvitpQUhQxXMaCF708k7hwrWl9GjFqhHnQ7AZPH5Gpj0b0YqULJJ5sGQ1J0sqVI5kfPn_Pgmc\/s1600\/diagram.png\" \/>\n<meta name=\"author\" content=\"dev95\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629\" \/>\n\t<meta name=\"twitter:data1\" content=\"dev95\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 \u062f\u0642\u064a\u0642\u0629\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/\"},\"author\":{\"name\":\"dev95\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\"},\"headline\":\"Build intelligent Android apps: In-app agentic workflows\",\"datePublished\":\"2026-09-29T07:07:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/\"},\"wordCount\":1436,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/0817Bookingassistantagenticcloud_Meta.png?fit=2469%2C1605&ssl=1\",\"articleSection\":[\"Android\"],\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/\",\"url\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/\",\"name\":\"Build intelligent Android apps: In-app agentic workflows - Dev95\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/0817Bookingassistantagenticcloud_Meta.png?fit=2469%2C1605&ssl=1\",\"datePublished\":\"2026-09-29T07:07:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/0817Bookingassistantagenticcloud_Meta.png?fit=2469%2C1605&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/0817Bookingassistantagenticcloud_Meta.png?fit=2469%2C1605&ssl=1\",\"width\":2469,\"height\":1605},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dev95.site\\\/build-intelligent-android-apps-in-app-agentic-workflows\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dev95.site\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Build intelligent Android apps: In-app agentic workflows\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"name\":\"Dev95\",\"description\":\"A comprehensive platform for data and knowledge, delivering reliable content that meets the aspirations of readers and enthusiasts.\",\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dev95.site\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\",\"name\":\"Dev95\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Dev95\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\",\"name\":\"dev95\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"caption\":\"dev95\"},\"url\":\"https:\\\/\\\/dev95.site\\\/ar\\\/author\\\/mohammad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Build intelligent Android apps: In-app agentic workflows - Dev95","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dev95.site\/ar\/build-intelligent-android-apps-in-app-agentic-workflows\/","og_locale":"ar_AR","og_type":"article","og_title":"Build intelligent Android apps: In-app agentic workflows - Dev95","og_description":"Posted by Jolanda Verhoef, Senior Developer Relations Engineer, Android Developer Relations Welcome back to the blog post series &#8220;Build intelligent Android apps&#8221; where you take a basic Android app and transform it into a personalized, intelligent, and agentic experience. InRead more &gt;&gt;&gt;","og_url":"https:\/\/dev95.site\/ar\/build-intelligent-android-apps-in-app-agentic-workflows\/","og_site_name":"Dev95","article_published_time":"2026-09-29T07:07:33+00:00","og_image":[{"url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgY6IiKGjUY3WJdlgTOgeHcogIeKdxuziERDbxEtw2vcZ29yB-skCjhxSvhZ8HGDD_TbQ7SDTt1ugXRq1uYaza2FfeTMs9m4dMzcx5rIUrskMDgHqW5QZHvitpQUhQxXMaCF708k7hwrWl9GjFqhHnQ7AZPH5Gpj0b0YqULJJ5sGQ1J0sqVI5kfPn_Pgmc\/s1600\/diagram.png","type":"","width":"","height":""}],"author":"dev95","twitter_card":"summary_large_image","twitter_misc":{"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629":"dev95","\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"11 \u062f\u0642\u064a\u0642\u0629"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/#article","isPartOf":{"@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/"},"author":{"name":"dev95","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298"},"headline":"Build intelligent Android apps: In-app agentic workflows","datePublished":"2026-09-29T07:07:33+00:00","mainEntityOfPage":{"@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/"},"wordCount":1436,"commentCount":0,"publisher":{"@id":"https:\/\/dev95.site\/#organization"},"image":{"@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/0817Bookingassistantagenticcloud_Meta.png?fit=2469%2C1605&ssl=1","articleSection":["Android"],"inLanguage":"ar","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/","url":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/","name":"Build intelligent Android apps: In-app agentic workflows - Dev95","isPartOf":{"@id":"https:\/\/dev95.site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/#primaryimage"},"image":{"@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/0817Bookingassistantagenticcloud_Meta.png?fit=2469%2C1605&ssl=1","datePublished":"2026-09-29T07:07:33+00:00","breadcrumb":{"@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/"]}]},{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/#primaryimage","url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/0817Bookingassistantagenticcloud_Meta.png?fit=2469%2C1605&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/0817Bookingassistantagenticcloud_Meta.png?fit=2469%2C1605&ssl=1","width":2469,"height":1605},{"@type":"BreadcrumbList","@id":"https:\/\/dev95.site\/build-intelligent-android-apps-in-app-agentic-workflows\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dev95.site\/"},{"@type":"ListItem","position":2,"name":"Build intelligent Android apps: In-app agentic workflows"}]},{"@type":"WebSite","@id":"https:\/\/dev95.site\/#website","url":"https:\/\/dev95.site\/","name":"Dev95","description":"\u0645\u0646\u0635\u0629 \u0634\u0627\u0645\u0644\u0629 \u0644\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0648\u0627\u0644\u0645\u0639\u0631\u0641\u0629\u060c \u062a\u0642\u062f\u0645 \u0645\u062d\u062a\u0648\u0649\u064b \u0645\u0648\u062b\u0648\u0642\u0627\u064b \u064a\u0644\u0628\u064a \u062a\u0637\u0644\u0639\u0627\u062a \u0627\u0644\u0642\u0631\u0627\u0621 \u0648\u0627\u0644\u0645\u0647\u062a\u0645\u064a\u0646.","publisher":{"@id":"https:\/\/dev95.site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dev95.site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/dev95.site\/#organization","name":"Dev95","url":"https:\/\/dev95.site\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Dev95"},"image":{"@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298","name":"dev95","image":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","caption":"dev95"},"url":"https:\/\/dev95.site\/ar\/author\/mohammad\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/09\/0817Bookingassistantagenticcloud_Meta.png?fit=2469%2C1605&ssl=1","_links":{"self":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/5170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/comments?post=5170"}],"version-history":[{"count":0,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/5170\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/media\/5181"}],"wp:attachment":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/media?parent=5170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/categories?post=5170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/tags?post=5170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}