Generated banner for Virtual Agent Android
Generated logo for Virtual Agent Android

Virtual Agent Android

AnthropicOfficialCreated by ZoomDistributed by Anthropic

  • Skill
  • Tool integration
  • Software development
  • MIT
  • No issues found

From the author

Zoom Virtual Agent Android integration via WebView. Use for Java/Kotlin bridge callbacks, native URL handling, support_handoff relay, and lifecycle-safe embedding.
— the description by Zoom

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides the framework for embedding the Zoom Virtual Agent into native Android applications. It focuses on the WebView integration model, requiring developers to inject runtime configuration, manage lifecycle-safe embedding, and implement a JavaScript bridge to handle communication between the web-based agent and the native Android environment. The integration relies on specific handlers for events such as support handoffs and URL navigation.

What it does

  • Facilitates hosting the Zoom Virtual Agent campaign URL within an Android WebView.
  • Provides patterns for injecting runtime context into the web environment.
  • Enables registration of JavaScript bridges for handling native callbacks.
  • Supports native URL handling and routing via WebView overrides.
  • Manages support handoff relays between the web agent and native application logic.

When to use it

  • When embedding a Zoom Virtual Agent into an existing Android application.
  • When you need to bridge communication between the web-based agent and native Java or Kotlin code.
  • When implementing custom navigation or support handoff logic triggered by the virtual agent.
  • When ensuring the virtual agent lifecycle is correctly managed within an Android activity or fragment.

Advantages

  • Ensures consistent communication between web and native layers via a defined bridge contract.
  • Provides structured patterns for handling complex events like support handoffs.
  • Allows for native control over URL loading and navigation policies.
  • Supports lifecycle-safe integration to prevent memory leaks or crashes.

Usage examples

“How do I set up the JavaScript bridge for the Zoom Virtual Agent in my Android app?”
The agent provides the necessary patterns to register a JavaScript interface that handles commonHandler JSON payloads and support_handoff events within your native code.
“What is the recommended way to handle URL navigation from the virtual agent?”
The agent advises using shouldOverrideUrlLoading to intercept and route URLs natively, while treating legacy openURL commands as a compatibility path.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/anthropics/virtual-agent-android/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip virtual-agent-android.zip -d .agents/skills

Documentation by Zoom

Zoom Virtual Agent - Android

Official docs:

  1. concepts/webview-lifecycle.md

  2. examples/js-bridge-patterns.md

  3. references/android-reference-map.md

  4. troubleshooting/common-issues.md

Integration Model

  • Host campaign URL in Android WebView.

  • Inject runtime context (window.zoomCampaignSdkConfig).

  • Register JavaScript bridge for exitHandler, commonHandler, support_handoff.

  • Apply URL policy via shouldOverrideUrlLoading and optional multi-window callbacks.

Hard Guardrails

  • Initialize handlers before expecting JS callbacks.

  • Treat legacy openURL command handling as compatibility path only.

  • Prefer DOM links or window.open handling plus explicit native routing.

Chaining

  • Product-level patterns: ../SKILL.md

  • Contact Center mobile scope: ../../contact-center/android/SKILL.md

Files

examples/js-bridge-patterns.md

Android JS Bridge Patterns

Inject Native Bridge

private fun injectJavaScriptFunction() {
    val js = """
        javascript: window.addEventListener('zoomCampaignSdk:ready', () => {
            if (window.zoomCampaignSdk) {
                window.zoomCampaignSdk.native = {
                    exitHandler: { handle: function() { AndroidExit.handleExit(); } },
                    commonHandler: { handle: function(e) { AndroidCommon.handleCommon(JSON.stringify(e)); } }
                };
            }
        });
    """.trimIndent()
    webView.loadUrl(js)
}

Handoff Relay

private fun injectHandoffFunction() {
    val js = """
        javascript: window.addEventListener('support_handoff', (e) => {
            AndroidHandoff.handleHandoff(JSON.stringify(e.detail));
        });
    """.trimIndent()
    webView.loadUrl(js)
}

URL Governance

  • Use shouldOverrideUrlLoading for in-app vs system-browser policy.

  • Use multi-window callbacks for target="_blank" handling.

Requirements and compatibility

Written for: Claude Code, Claude apps

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Claude Code frontmatter

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Zoom
Publisher
Anthropic (Official)
Distributed by
Anthropic
Source
anthropics/knowledge-work-plugins · partner-built/zoom-plugin/skills/virtual-agent/android · commit e050c2e
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from partner-built/zoom-plugin/LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Zoom or Anthropic.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download virtual-agent-android.zip