#149 by GitHub stars

android/skills

Upgrades, or migrates, an Android project to use Android Gradle Plugin (AGP) version 9. Do not use this skill for migrating Kotlin Multiplatform (KMP) projects.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

build-system/agp/agp-9-upgrade/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

camera/camerax/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

cars/android-for-cars-parked-apps/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

device-ai/appfunctions/SKILL.md

Week of Nov 2, 2026 · +25 / −17 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

- 3 description: Analyzes Android apps to identify key user workflows for AppFunctions
- 4   such as creating a note, playing media, or sending an automated or AI agent triggered
- 5   message, voice commands, or system shortcuts, without needing to open the app UI.
- 6   Generates Kotlin code to expose these workflows to the Android system, allowing
- 7   agents to discover and execute them on-device. Also refines KDoc documentation to
- 8   ensure AI agents correctly understand and use the provided functionality.
+ 3 description: Analyzes Android apps to find user workflows to expose as AppFunctions,
+ 4   such as creating a note, playing media, or sending a message. AI agents, voice commands,
+ 5   and system shortcuts then run them without opening the app UI. Generates Kotlin
+ 6   code with the androidx.appfunctions library, and refines KDoc and the app description
+ 7   so that agents choose and call functions correctly. Use this skill when discovering,
+ 8   implementing, documenting, testing, or upgrading AppFunctions in an Android app,
+ 9   including @AppFunctionDeclaration, @AppFunctionSerializable, @AppFunctionServiceEntryPoint,
+ 10   AppFunctionService, app_metadata.xml, appfn:instructions, adb shell cmd app_function,
+ 11   and legacy @AppFunction or AppFunctionConfiguration.Provider code. Don't use for
+ 12   building agents that call AppFunctions or for remote MCP servers.
- 12   last-updated: '2026-10-25'
+ 16   last-updated: '2026-10-28'
- 23 Analyzes Android apps to identify key user workflows for AppFunctions such as
- 24 creating a note, playing media, or sending an automated or AI agent triggered
- 25 message, voice commands, or system shortcuts, without needing to open the app
- 26 UI.
+ 27 Analyzes Android apps to identify key user workflows to expose as AppFunctions,
+ 28 such as creating a note, playing media, or sending a message, for AI agents,
+ 29 voice commands, and system shortcuts to run without opening the app UI.
- 31 Also refines KDoc documentation to ensure AI agents correctly
+ 34 Also refines KDoc documentation and the app description so AI agents correctly
+ 43 Use `androidx.appfunctions:appfunctions` and the KSP compiler
+ 44 `androidx.appfunctions:appfunctions-compiler`, version 1.0.0-beta01 or later.
- 51 - *[Step 3: KDoc refinement](references/kdoc-refinement-optimization.md)*: Optimize AppFunction KDoc for AI agents and Model Context Protocol. If a user asks to "write KDoc", "optimize for MCP", or "refactor tool descriptions for LLMs", use this step.
+ 56 - *[Step 3: KDoc refinement](references/kdoc-refinement-optimization.md)*: Optimize AppFunction KDoc and the app description for AI agents and Model Context Protocol. If a user asks to "write KDoc", "optimize for MCP", or "refactor tool descriptions for LLMs", use this step.
- 54 If users request a subset of steps, you must encourage them to use all steps.
+ 59 When the user asks for a subset of the steps, run those steps and any step
+ 60 that the critical constraints require. Then list the skipped steps and ask
+ 61 whether to run them.
- 59 - *[Migration to service entry point](references/migrate-to-service-entry-point.md)* : Documents the systematic procedure for migrating Android applications using AppFunctions versions 1.0.0-alpha09 and lower to `AppFunctionServiceEntryPoint` architecture introduced in version 1.0.0-alpha10. Load when a user asks to migrate or upgrade existing AppFunctions code, or when you encounter legacy `AppFunctionConfiguration.Provider` implementations.
+ 66 - *[Migration to service entry point](references/migrate-to-service-entry-point.md)* : Migrates apps on AppFunctions 1.0.0-alpha09 or lower to the `AppFunctionServiceEntryPoint` architecture from 1.0.0-alpha10, and upgrades apps to 1.0.0-beta01. Load it when a user asks to migrate or upgrade existing AppFunctions code. When you find legacy `AppFunctionConfiguration.Provider` implementations, `@AppFunction` annotations, or `appfn:description` attributes, load it and ask the user before you migrate.
- 64 - **Security**: Don't expose sensitive data or run destructive actions without user confirmation.
+ 71 - **Security**: Expose only safe, non-destructive tasks that the app's UI already offers on that form factor. Never give agents wide-ranging access to user data or system resources. Never require or return passwords, financial details, private keys, or other highly sensitive personal information.
+ 72 - **Descriptions**: Describe what each function does, never how an agent must behave. Put call order across functions in the app description, not in function KDoc.
- 71 - If you encounter issues when upgrading legacy configurations, see [Migration to service entry point](references/migrate-to-service-entry-point.md).
+ 79 - If you encounter issues when upgrading AppFunctions, such as errors on `@AppFunction`, which is no longer an annotation, see [Migration to service entry point](references/migrate-to-service-entry-point.md).

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

device-ai/litert/litert-lm/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

device-ai/litert/litert-runtime/SKILL.md

Week of Nov 2, 2026 · +28 / −4 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

- 14   last-updated: '2026-10-23'
+ 14   last-updated: '2026-10-28'
- 401 5. **Rewrite the inference code** : Replace `Interpreter` and `FileUtil.loadMappedFile` with the `Classifier` helper of Step 2, created and run only on the single-thread executor of Step 3, never in a constructor that the main thread calls. When no caller retries on the CPU as in Step 3, create the helper's GPU option with the CPU as a second accelerator (`CompiledModel.Options(Accelerator.GPU, Accelerator.CPU)`).
- 402 6. **Verify in two stages**: The build passes and the searches for legacy references print nothing; then the migrated output matches the golden output on a device.
- 403 7. **Report what changed and what didn't migrate** : When the app used NNAPI, tell the user that it now runs on the GPU with the CPU as a second accelerator, which changes the speed and the numerical results of a quantized model that ran on a DSP or an NPU before; point them to [NPU acceleration with LiteRT](https://ai.google.dev/edge/litert/next/npu) for the NPU. Tell the user about the TensorFlow Lite Task Library, C++ modules, and Select TensorFlow operators, which this skill doesn't migrate.
+ 401 5. **Rewrite the inference code** : Replace `Interpreter` and
+ 402    `FileUtil.loadMappedFile` with the `Classifier` helper of Step 2, created and
+ 403    run only on the single-thread executor of Step 3, never in a constructor
+ 404    that the main thread calls. When no caller retries on the CPU as in Step 3,
+ 405    create the helper's GPU option with the CPU as a second accelerator
+ 406    (`CompiledModel.Options(Accelerator.GPU, Accelerator.CPU)`). An
+ 407    `interpreter.runSignature(inputs, outputs, key)` call becomes the helper's
+ 408    buffers and `run` call with the signature key, as follows. This form runs on
+ 409    both runtimes, also after the app changes runtime or upgrades LiteRT; when
+ 410    the signature has more than one input or output, you must follow the
+ 411    signature rules in [migration](references/migration.md):
+ 412 
+ 413        inputs += model.createInputBuffers("serving_default")
+ 414        outputs += model.createOutputBuffers("serving_default")
+ 415        model.run(inputs, outputs, "serving_default")
+ 416 
+ 417 6. **Verify in two stages**: The build passes and the searches for legacy
+ 418    references print nothing; then the migrated output matches the golden
+ 419    output on a device.
+ 420 
+ 421 7. **Report what changed and what didn't migrate** : When the app used NNAPI,
+ 422    tell the user that it now runs on the GPU with the CPU as a second
+ 423    accelerator, which changes the speed and the numerical results of a
+ 424    quantized model that ran on a DSP or an NPU before; point them to
+ 425    [NPU acceleration with LiteRT](https://ai.google.dev/edge/litert/next/npu) for the NPU. Tell the user about the
+ 426    TensorFlow Lite Task Library, C++ modules, and Select TensorFlow operators,
+ 427    which this skill doesn't migrate.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

device-ai/ml-kit-genai-prompt-api/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

device-ai/mlkit-agent-api/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

devtools/android-cli/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

identity/restore-credentials/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

identity/verified-email/SKILL.md

Week of Nov 2, 2026 · +3 / −3 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

- 11   last-updated: '2026-09-16'
+ 11   last-updated: '2026-10-28'
- 123 [Digital Credentials Verifier API](references/android/identity/digital-credentials/credential-verifier.md) through an [OpenID for Verifiable
+ 123 [Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
- 347 > **Important:** We highly recommend that after receiving the verified email, you trigger Credential Manager's [passkey creation](https://developer.android.com/identity/credential-manager/passkeys/create-passkeys).
+ 347 > **Important:** We highly recommend that after receiving the verified email, you trigger Credential Manager's [passkey creation](references/android/identity/passkeys/create-passkeys.md).

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

jetpack-compose/adaptive/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

jetpack-compose/ink/ink-app-builder/SKILL.md

Week of Nov 2, 2026 · +1 / −1 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

- 14   last-updated: '2026-10-24'
+ 14   last-updated: '2026-10-28'

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

jetpack-compose/ink/ink-custom-brush-builder/SKILL.md

Week of Nov 2, 2026 · +1 / −1 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

- 15   last-updated: '2026-10-24'
+ 15   last-updated: '2026-10-28'

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

jetpack-compose/jetpack-compose-performance/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

media/media3-cast-integration/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

navigation/navigation-3/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

navigation/navigation-event/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

performance/anr-audit-and-fix/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

performance/r8-analyzer/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

play/engage-sdk-integration/SKILL.md

Week of Nov 2, 2026 · +1 / −1 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

- 9   last-updated: '2026-10-17'
+ 9   last-updated: '2026-10-28'

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

play/play-billing-library-version-upgrade/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

play/play-policy-insights/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

profilers/android-profiler/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

security/android-intent-security/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

security/android-permissions-security/SKILL.md

Week of Nov 2, 2026 · +6 / −6 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

- 10   last-updated: '2026-10-22'
+ 10   last-updated: '2026-10-28'
- 63 | **Weak Custom Permission Protection** | `AndroidManifest.xml` with `android:protectionLevel="normal"`, `"dangerous"`, or `"signatureOrSystem"` | Unauthorized apps request or claim permission without restriction | Upgrade to `signature` or `signature|knownSigner` with `android:knownCerts`. |
+ 63 | **Weak Custom Permission Protection** | `AndroidManifest.xml` with `android:protectionLevel="normal"`, `"dangerous"`, or `"signatureOrSystem"` | Unauthorized apps request or claim permission without restriction | Upgrade to `signature` or `signature` with `knownSigner` and `android:knownCerts`. |
- 65 | **Missing ContentProvider Split Permissions** | `<provider>` with only generic `android:permission` or missing `android:readPermission` and `android:writePermission` | Read-only callers execute write operations or write-only callers access read operations | Configure granular `android:readPermission="...READ_DATA"` and `android:writePermission="...WRITE_DATA"`, AND declare the custom `<permission>` tags with `android:protectionLevel="signature"` (or `signature|knownSigner`) at the `<manifest>` root. |
+ 65 | **Missing ContentProvider Split Permissions** | `<provider>` with only generic `android:permission` or missing `android:readPermission` and `android:writePermission` | Read-only callers execute write operations or write-only callers access read operations | Configure granular `android:readPermission="...READ_DATA"` and `android:writePermission="...WRITE_DATA"`, AND declare the custom `<permission>` tags with `android:protectionLevel="signature"` (or `signature` with `knownSigner`) at the `<manifest>` root. |
- 145   - *Persist access* : The receiving app calls `contentResolver.takePersistableUriPermission(uri, modeFlags)` for durable access across reboots.
+ 145   - *Persist and release access* : The receiving app calls `contentResolver.takePersistableUriPermission(uri, modeFlags)` for durable access across reboots, and `contentResolver.releasePersistableUriPermission(uri, modeFlags)` when durable access is no longer needed.
- 147   - *Revoke access* : Call `context.revokeUriPermission(uri, modeFlags)` or `contentResolver.releasePersistableUriPermission(uri, modeFlags)` as soon as operations conclude.
+ 147   - *Revoke temporary access* : Call `context.revokeUriPermission(targetPackage, uri, modeFlags)` (API 26+), falling back to `context.revokeUriPermission(uri, modeFlags)` on API 25 and lower so access fails closed as soon as operations conclude.
- 366 2. **Check Rationale** : `shouldShowRequestPermissionRationale(permission)` to present educational context before requesting.
+ 366 2. **Check Rationale** : When `shouldShowRequestPermissionRationale(permission)` returns `true`, show a rationale dialog and launch the permission request only from its Continue button.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

system/edge-to-edge/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

system/glance-appwidget-updates-and-memory/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

system/glance-canonical-layouts/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

testing/testing-setup/SKILL.md

Week of Nov 2, 2026 · +1 / −1 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

- 9   last-updated: '2026-10-23'
+ 9   last-updated: '2026-10-28'

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

tv/leanback-to-compose-tv-migration/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

wear/wear-compose-m3/SKILL.md

Week of Nov 2, 2026 · +1 / −1 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

- 11   last-updated: '2026-10-24'
+ 11   last-updated: '2026-10-28'

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

wear/wear-widgets/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

xr/display-glasses-with-jetpack-compose-glimmer/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

xr/projected-hardware/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

45fd1739a4db → 6daa53ef27fa

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 45fd1739a4db

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 6daa53ef27fa2aa87827d183a85c06cedceca833

git clone --filter=blob:none --no-checkout https://github.com/android/skills.git .hotskills/android-skills && git -C .hotskills/android-skills checkout --detach 6daa53ef27fa2aa87827d183a85c06cedceca833 # Copy each selected skill directory from .hotskills/android-skills into .claude/skills/<skill-name>/
10.4kGitHub stars
271stars in 7 days
36skills in this repository
18commits in 30 days

Heat

7.3
  • Star growth, last 7 daysAhead of 93% of tracked repositories
  • Star growth, last 24 hoursAhead of 84% of tracked repositories
  • Rank movement, last 7 daysAhead of 64% of tracked repositories
  • Commits, last 30 daysAhead of 83% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 2, 2026Nov 6, 202610,368

Individual skills in this repository

How it works

agp-9-upgrade

When your agent uses it

Upgrades, or migrates, an Android project to use Android Gradle Plugin (AGP) version 9. Do not use this skill for migrating Kotlin Multiplatform (KMP) projects.

What it loads into context

Frontmatter

130 tokens

Always available to the agent

SKILL.md

920 tokens

When the skill is activated

Reference documents

844,644 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Migration guide
  2. Requirements
  3. Steps
  4. Guidelines
  5. Verification
  6. Troubleshooting

Scripts executed separately

  • ../../../performance/r8-analyzer/scripts/analyze.py
  • ../../../performance/r8-analyzer/scripts/convert_pb_to_json.py
  • ../../../performance/r8-analyzer/scripts/keep_radius_pb2.py
  • ../../../play/play-policy-insights/scripts/generate_report.py
  • ../../../play/play-policy-insights/scripts/orchestrator.py
  • ../../../play/play-policy-insights/scripts/play_store_scraper.py
  • ../../../play/play-policy-insights/scripts/scanner.py
  • ../../../play/play-policy-insights/scripts/template_engine.py
  • ../../../profilers/android-profiler/references/perfetto/bin/trace_processor

Files

  • ../../../.claude-plugin/marketplace.jsonasset898 bytes
  • ../../../.claude-plugin/plugin.jsonasset2,302 bytes
  • SKILL.mdcore3,529 bytes
  • SKILL.mdcore3,529 bytes
  • references/android/build/migrate-to-built-in-kotlin.mddoc13,427 bytes
  • references/android/build/releases/agp-9-0-0-release-notes.mddoc52,526 bytes
  • references/buildconfig.mddoc1,500 bytes
  • references/ksp-kapt.mddoc1,790 bytes
  • references/paparazzi-gradle-9.mddoc1,164 bytes
  • references/recipes.mddoc2,272 bytes
  • ../../../camera/camerax/SKILL.mddoc6,402 bytes
  • ../../../camera/camerax/references/camera1-to-camerax.mddoc5,513 bytes
  • ../../../camera/camerax/references/camera2-to-camerax.mddoc5,717 bytes
  • ../../../camera/camerax/references/expert-blueprints.mddoc2,199 bytes
  • ../../../camera/camerax/references/foldables.mddoc3,030 bytes
  • ../../../camera/camerax/references/immutability.mddoc1,704 bytes
  • ../../../camera/camerax/references/low-light.mddoc4,657 bytes
  • ../../../camera/camerax/references/mlkit-spatial.mddoc2,842 bytes
  • ../../../camera/camerax/references/modern-apis.mddoc2,052 bytes
  • ../../../camera/camerax/references/testing.mddoc2,605 bytes
  • ../../../camera/camerax/references/thermals.mddoc3,201 bytes
  • ../../../camera/camerax/references/wear-os.mddoc2,770 bytes
  • ../../../camera/camerax/references/xr.mddoc2,455 bytes
  • ../../../cars/android-for-cars-parked-apps/SKILL.mddoc17,862 bytes
  • ../../../cars/android-for-cars-parked-apps/references/android/docs/quality-guidelines/car-app-quality/index.mddoc55,421 bytes
  • ../../../device-ai/appfunctions/SKILL.mddoc5,715 bytes
  • ../../../device-ai/appfunctions/references/adb-interaction-testing.mddoc3,830 bytes
  • ../../../device-ai/appfunctions/references/context.mddoc1,614 bytes
  • ../../../device-ai/appfunctions/references/feature-discovery-analysis.mddoc3,297 bytes
  • ../../../device-ai/appfunctions/references/implementation-configuration.mddoc13,559 bytes
  • ../../../device-ai/appfunctions/references/kdoc-refinement-optimization.mddoc4,790 bytes
  • ../../../device-ai/appfunctions/references/migrate-to-service-entry-point.mddoc11,874 bytes
  • ../../../device-ai/litert/litert-lm/SKILL.mddoc18,290 bytes
  • ../../../device-ai/litert/litert-lm/references/android/google/play/on-device-ai.mddoc37,695 bytes
  • ../../../device-ai/litert/litert-lm/references/get-a-model.mddoc1,869 bytes
  • ../../../device-ai/litert/litert-runtime/SKILL.mddoc27,631 bytes
  • ../../../device-ai/litert/litert-runtime/references/android/google/play/on-device-ai.mddoc37,695 bytes
  • ../../../device-ai/litert/litert-runtime/references/migration.mddoc19,312 bytes
  • ../../../device-ai/litert/litert-runtime/references/play-services.mddoc11,109 bytes
  • ../../../device-ai/litert/litert-runtime/references/verify.mddoc2,457 bytes
  • ../../../device-ai/ml-kit-genai-prompt-api/SKILL.mddoc4,179 bytes
  • ../../../device-ai/ml-kit-genai-prompt-api/references/get-started.mddoc10,837 bytes
  • ../../../device-ai/ml-kit-genai-prompt-api/references/prefix-caching.mddoc5,821 bytes
  • ../../../device-ai/ml-kit-genai-prompt-api/references/prompt-design.mddoc3,573 bytes
  • ../../../device-ai/ml-kit-genai-prompt-api/references/prompt-optimization.mddoc4,649 bytes
  • ../../../device-ai/ml-kit-genai-prompt-api/references/structured-output.mddoc10,437 bytes
  • ../../../device-ai/ml-kit-genai-prompt-api/references/system-instructions.mddoc3,394 bytes
  • ../../../device-ai/mlkit-agent-api/SKILL.mddoc14,124 bytes
  • ../../../device-ai/mlkit-agent-api/references/session_lifecycle.mddoc3,035 bytes
  • ../../../device-ai/mlkit-agent-api/references/tools_and_functions.mddoc12,221 bytes
  • ../../../devtools/android-cli/SKILL.mddoc43,321 bytes
  • ../../../identity/restore-credentials/SKILL.mddoc25,330 bytes
  • ../../../identity/restore-credentials/references/android/guide/topics/manifest/application-element.mddoc43,070 bytes
  • ../../../identity/restore-credentials/references/android/identity/passkeys/create-passkeys.mddoc19,472 bytes
  • ../../../identity/restore-credentials/references/android/identity/passkeys/sign-in-with-passkeys.mddoc11,571 bytes
  • ../../../identity/verified-email/SKILL.mddoc20,346 bytes
  • ../../../identity/verified-email/references/android/identity/credential-manager/index.mddoc5,342 bytes
  • ../../../identity/verified-email/references/android/identity/digital-credentials/email-verification-implementation.mddoc14,924 bytes
  • ../../../identity/verified-email/references/android/identity/digital-credentials/email-verification.mddoc9,472 bytes
  • ../../../identity/verified-email/references/android/identity/digital-credentials/index.mddoc9,393 bytes
  • ../../../identity/verified-email/references/android/identity/passkeys/create-passkeys.mddoc19,472 bytes
  • ../../../identity/verified-email/references/android/identity/sign-in/credential-manager-webview.mddoc3,850 bytes
  • ../../../jetpack-compose/adaptive/SKILL.mddoc22,102 bytes
  • ../../../jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.mddoc9,349 bytes
  • ../../../jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.mddoc2,337 bytes
  • ../../../jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.mddoc5,987 bytes
  • ../../../jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.mddoc8,504 bytes
  • ../../../jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.mddoc16,219 bytes
  • ../../../jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.mddoc1,849 bytes
  • ../../../jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/index.mddoc4,253 bytes
  • ../../../jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.mddoc5,756 bytes
  • ../../../jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.mddoc14,161 bytes
  • ../../../jetpack-compose/adaptive/references/android/guide/navigation/navigation-3/recipes/material-listdetail.mddoc6,513 bytes
  • ../../../jetpack-compose/adaptive/references/android/guide/navigation/navigation-3/save-state.mddoc6,011 bytes
  • ../../../jetpack-compose/adaptive/references/android/studio/preview/compose-screenshot-testing-with-testsuites.mddoc7,507 bytes
  • ../../../jetpack-compose/adaptive/references/custom_cursors.mddoc4,351 bytes
  • ../../../jetpack-compose/adaptive/references/foldable-tabletop.mddoc3,875 bytes
  • ../../../jetpack-compose/adaptive/references/keyboard_shortcuts.mddoc6,166 bytes
  • ../../../jetpack-compose/adaptive/references/tooltips.mddoc4,266 bytes
  • ../../../jetpack-compose/ink/ink-app-builder/SKILL.mddoc15,618 bytes
  • ../../../jetpack-compose/ink/ink-app-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-brush-apis.mddoc5,135 bytes
  • ../../../jetpack-compose/ink/ink-app-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-draw-stroke.mddoc2,115 bytes
  • ../../../jetpack-compose/ink/ink-app-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-geometry-apis.mddoc1,238 bytes
  • ../../../jetpack-compose/ink/ink-app-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-setup.mddoc1,226 bytes
  • ../../../jetpack-compose/ink/ink-app-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-state-preservation.mddoc12,150 bytes
  • ../../../jetpack-compose/ink/ink-app-builder/references/drawing-and-brushes.mddoc9,197 bytes
  • ../../../jetpack-compose/ink/ink-app-builder/references/editing-and-architecture.mddoc10,463 bytes
  • ../../../jetpack-compose/ink/ink-app-builder/references/persistence-and-advanced.mddoc10,901 bytes
  • ../../../jetpack-compose/ink/ink-custom-brush-builder/SKILL.mddoc7,330 bytes
  • ../../../jetpack-compose/ink/ink-custom-brush-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-brush-apis.mddoc5,135 bytes
  • ../../../jetpack-compose/ink/ink-custom-brush-builder/references/brush-behaviors.mddoc11,043 bytes
  • ../../../jetpack-compose/ink/ink-custom-brush-builder/references/brush-structure.mddoc10,145 bytes
  • ../../../jetpack-compose/ink/ink-custom-brush-builder/references/examples.mddoc12,091 bytes
  • ../../../jetpack-compose/ink/ink-custom-brush-builder/references/textures-and-serialization.mddoc7,826 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/SKILL.mddoc20,957 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/references/android/develop/ui/compose/custom-modifiers.mddoc27,301 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/references/android/develop/ui/compose/performance/backwards-write.mddoc12,248 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/references/android/develop/ui/compose/performance/stability/strongskipping.mddoc6,743 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/references/animation.mddoc8,169 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/references/effects-and-threading.mddoc17,715 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/references/graphics-performance.mddoc9,643 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/references/layouts.mddoc9,041 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/references/lazy-layouts.mddoc12,841 bytes
  • ../../../jetpack-compose/jetpack-compose-performance/references/state-and-stability.mddoc28,178 bytes
  • ../../../jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/SKILL.mddoc5,434 bytes
  • ../../../jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/analysis-of-the-project-and-layout.mddoc3,133 bytes
  • ../../../jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/designsystems/migrate-xml-theme-to-compose.mddoc8,259 bytes
  • ../../../jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/compose-in-views.mddoc12,304 bytes
  • ../../../jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/views-in-compose.mddoc12,529 bytes
  • ../../../jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/setup-compose-dependencies-and-compiler.mddoc7,517 bytes
  • ../../../jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/identify-optimal-xml-candidate.mddoc1,667 bytes
  • ../../../jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/xml-layout-migration.mddoc3,589 bytes
  • ../../../media/media3-cast-integration/SKILL.mddoc10,723 bytes
  • ../../../media/media3-cast-integration/references/android/media/media3/cast/create-castplayer.mddoc14,304 bytes
  • ../../../media/media3-cast-integration/references/android/media/media3/cast/customize-castoptions.mddoc2,958 bytes
  • ../../../media/media3-cast-integration/references/android/media/media3/cast/index.mddoc1,326 bytes
  • ../../../navigation/navigation-3/SKILL.mddoc6,686 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/index.mddoc3,579 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/migration-guide.mddoc27,098 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/animations.mddoc6,525 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/basic.mddoc3,587 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicdsl.mddoc3,628 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicsaveable.mddoc3,597 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/bottomsheet.mddoc7,954 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/common-ui.mddoc8,673 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional-transitions.mddoc8,577 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional.mddoc9,664 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-custommatcher.mddoc7,228 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-staticuri.mddoc5,597 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-syntheticbackstack.mddoc7,920 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-uriarguments.mddoc15,795 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/dialog.mddoc4,494 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/lifecycle-owner.mddoc8,354 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-listdetail.mddoc6,513 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.mddoc6,798 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-hilt.mddoc12,674 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-koin.mddoc13,661 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.mddoc16,966 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/passingarguments.mddoc16,435 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-event.mddoc10,053 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-state.mddoc9,841 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.mddoc16,235 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.mddoc9,343 bytes
  • ../../../navigation/navigation-3/references/android/guide/navigation/type-safe-destinations.mddoc4,220 bytes
  • ../../../navigation/navigation-event/SKILL.mddoc13,103 bytes
  • ../../../navigation/navigation-event/references/android/guide/navigation/navigation-event/dispatcher.mddoc4,372 bytes
  • ../../../navigation/navigation-event/references/android/guide/navigation/navigation-event/handle-back.mddoc7,355 bytes
  • ../../../navigation/navigation-event/references/android/guide/navigation/navigation-event/index.mddoc4,100 bytes
  • ../../../navigation/navigation-event/references/android/guide/navigation/navigation-event/setup.mddoc1,068 bytes
  • ../../../performance/anr-audit-and-fix/SKILL.mddoc1,757 bytes
  • ../../../performance/anr-audit-and-fix/references/anr_trace_report_template.mddoc1,934 bytes
  • ../../../performance/anr-audit-and-fix/references/risk_analysis_guide.mddoc7,085 bytes
  • ../../../performance/anr-audit-and-fix/references/trace_analysis_guide.mddoc11,878 bytes
  • ../../../performance/r8-analyzer/SKILL.mddoc6,311 bytes
  • ../../../performance/r8-analyzer/references/CONFIGURATION.mddoc2,309 bytes
  • ../../../performance/r8-analyzer/references/FULL_BUILD_CONFIG_ANALYZER.mddoc4,161 bytes
  • ../../../performance/r8-analyzer/references/INSPECT-RULES.mddoc10,139 bytes
  • ../../../performance/r8-analyzer/references/REPORT_FORMAT.mddoc4,124 bytes
  • ../../../performance/r8-analyzer/references/android/topic/performance/app-optimization/enable-app-optimization.mddoc16,659 bytes
  • ../../../performance/r8-analyzer/scripts/analyze.pyruns8,818 bytes
  • ../../../performance/r8-analyzer/scripts/convert_pb_to_json.pyruns2,365 bytes
  • ../../../performance/r8-analyzer/scripts/keep_radius_pb2.pyruns7,899 bytes
  • ../../../play/engage-sdk-integration/SKILL.mddoc9,493 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/faq.mddoc23,281 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/food.mddoc59,531 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/healthandfitness.mddoc63,525 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/listen.mddoc54,130 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/otherverticals.mddoc95,014 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/read.mddoc45,044 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/shopping.mddoc61,822 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/social.mddoc36,656 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/travel.mddoc104,709 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/tv/continue-watching/index.mddoc1,152 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/tv/entitlements.mddoc15,476 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/tv/getting-started.mddoc23,008 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/tv/recommendations.mddoc18,812 bytes
  • ../../../play/engage-sdk-integration/references/android/guide/playcore/engage/watch.mddoc61,289 bytes
  • ../../../play/engage-sdk-integration/references/clusters.mddoc6,006 bytes
  • ../../../play/engage-sdk-integration/references/common.mddoc18,327 bytes
  • ../../../play/engage-sdk-integration/references/patterns.mddoc21,784 bytes
  • ../../../play/engage-sdk-integration/references/requests.mddoc10,544 bytes
  • ../../../play/engage-sdk-integration/references/schemas/food.mddoc19,049 bytes
  • ../../../play/engage-sdk-integration/references/schemas/listen.mddoc30,595 bytes
  • ../../../play/engage-sdk-integration/references/schemas/other.mddoc8,238 bytes
  • ../../../play/engage-sdk-integration/references/schemas/read.mddoc15,326 bytes
  • ../../../play/engage-sdk-integration/references/schemas/shopping.mddoc13,819 bytes
  • ../../../play/engage-sdk-integration/references/schemas/social.mddoc8,688 bytes
  • ../../../play/engage-sdk-integration/references/schemas/travel.mddoc34,825 bytes
  • ../../../play/engage-sdk-integration/references/schemas/tv.mddoc48,052 bytes
  • ../../../play/engage-sdk-integration/references/schemas/watch.mddoc44,714 bytes
  • ../../../play/engage-sdk-integration/references/troubleshooting.mddoc3,733 bytes
  • ../../../play/play-billing-library-version-upgrade/SKILL.mddoc5,656 bytes
  • ../../../play/play-billing-library-version-upgrade/references/android/google/play/billing/release-notes.mddoc80,434 bytes
  • ../../../play/play-billing-library-version-upgrade/references/migration-logic.mddoc4,379 bytes
  • ../../../play/play-billing-library-version-upgrade/references/version-checklist.mddoc3,404 bytes
  • ../../../play/play-policy-insights/SKILL.mddoc8,521 bytes
  • ../../../play/play-policy-insights/resources/common_mandates.mddoc6,127 bytes
  • ../../../play/play-policy-insights/resources/compliance_report_template.mddoc3,204 bytes
  • ../../../play/play-policy-insights/resources/critic.mddoc4,293 bytes
  • ../../../play/play-policy-insights/resources/goal_data_safety.mddoc10,420 bytes
  • ../../../play/play-policy-insights/resources/goal_permissions_and_apis.mddoc26,352 bytes
  • ../../../play/play-policy-insights/resources/goal_user_account.mddoc5,262 bytes
  • ../../../play/play-policy-insights/resources/policies.jsonasset13,159 bytes
  • ../../../play/play-policy-insights/resources/scanner_config.jsonasset26,066 bytes
  • ../../../play/play-policy-insights/scripts/generate_report.pyruns28,402 bytes
  • ../../../play/play-policy-insights/scripts/orchestrator.pyruns46,010 bytes
  • ../../../play/play-policy-insights/scripts/play_store_scraper.pyruns12,303 bytes
  • ../../../play/play-policy-insights/scripts/scanner.pyruns9,055 bytes
  • ../../../play/play-policy-insights/scripts/template_engine.pyruns7,129 bytes
  • ../../../profilers/android-profiler/SKILL.mddoc2,269 bytes
  • ../../../profilers/android-profiler/analysis/analysis_orchestrator.mddoc1,491 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-sql/perfetto_sql.mddoc969 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-trace-analysis/perfetto_trace_analysis.mddoc4,305 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/hints_cpu.mddoc2,673 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/hints_graphics.mddoc2,177 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/hints_io.mddoc1,833 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/hints_ipc.mddoc1,776 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/hints_memory.mddoc2,282 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/hints_power.mddoc1,202 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-trace-analysis/references/per_candidate_analysis.mddoc8,977 bytes
  • ../../../profilers/android-profiler/analysis/workflows/perfetto-trace-analysis/references/triage.mddoc3,988 bytes
  • ../../../profilers/android-profiler/recording/recording_orchestrator.mddoc1,576 bytes
  • ../../../profilers/android-profiler/recording/workflows/perfetto-trace-recording/perfetto_trace_recording.mddoc4,769 bytes
  • ../../../profilers/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/app_jank.pftxtasset1,040 bytes
  • ../../../profilers/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/cpu_profile.pftxtasset773 bytes
  • ../../../profilers/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/java_heap_dump.pftxtasset566 bytes
  • ../../../profilers/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/long_background.pftxtasset1,006 bytes
  • ../../../profilers/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/memory_counters.pftxtasset1,069 bytes
  • ../../../profilers/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/native_heap.pftxtasset589 bytes
  • ../../../profilers/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/sched_cpu.pftxtasset836 bytes
  • ../../../profilers/android-profiler/recording/workflows/perfetto-trace-recording/references/trace_config_reference.mddoc4,983 bytes
  • ../../../profilers/android-profiler/references/env_setup.mddoc513 bytes
  • ../../../profilers/android-profiler/references/perfetto/bin/trace_processorruns11,073 bytes
  • ../../../profilers/android-profiler/references/perfetto/setup.mddoc1,332 bytes
  • ../../../profilers/android-profiler/references/perfetto/sql.mddoc16,206 bytes
  • ../../../security/android-intent-security/SKILL.mddoc24,418 bytes
  • ../../../security/android-permissions-security/SKILL.mddoc29,205 bytes
  • ../../../security/android-permissions-security/references/android/guide/topics/manifest/permission-element.mddoc6,904 bytes
  • ../../../security/android-permissions-security/references/android/guide/topics/permissions/overview.mddoc10,610 bytes
  • ../../../security/android-permissions-security/references/android/privacy-and-security/risks/sender-of-pending-intents.mddoc3,819 bytes
  • ../../../security/android-permissions-security/references/android/training/permissions/requesting.mddoc38,838 bytes
  • ../../../system/edge-to-edge/SKILL.mddoc14,433 bytes
  • ../../../system/glance-appwidget-updates-and-memory/SKILL.mddoc21,297 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/AndroidManifest.xmlasset1,127 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/ClassicWidgetImageUpdater.ktasset2,028 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/FeedCollectionGlanceWidget.ktasset2,380 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/SampleGlanceWidget.ktasset4,063 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/WidgetBitmapUtils.ktasset4,485 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/WidgetStateAndActions.ktasset1,893 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/android/about/versions/17/behavior-changes-17.mddoc24,035 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/android/develop/ui/compose/glance/create-app-widget.mddoc22,264 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/android/develop/ui/views/appwidgets/index.mddoc9,750 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/proguard-rules.proasset98 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/res/xml/file_paths.xmlasset117 bytes
  • ../../../system/glance-appwidget-updates-and-memory/references/res/xml/sample_widget_info.xmlasset307 bytes
  • ../../../system/glance-canonical-layouts/SKILL.mddoc24,521 bytes
  • ../../../system/glance-canonical-layouts/references/ActionDemonstrationActivity.ktasset1,629 bytes
  • ../../../system/glance-canonical-layouts/references/CanonicalLayoutActivity.ktasset14,076 bytes
  • ../../../system/glance-canonical-layouts/references/CollectionsKtx.ktasset1,323 bytes
  • ../../../system/glance-canonical-layouts/references/collections/ActionListAppWidget.ktasset3,360 bytes
  • ../../../system/glance-canonical-layouts/references/collections/CheckListAppWidget.ktasset3,623 bytes
  • ../../../system/glance-canonical-layouts/references/collections/ImageGridAppWidget.ktasset3,393 bytes
  • ../../../system/glance-canonical-layouts/references/collections/ImageTextListAppWidget.ktasset3,519 bytes
  • ../../../system/glance-canonical-layouts/references/collections/data/FakeActionListDataRepository.ktasset4,606 bytes
  • ../../../system/glance-canonical-layouts/references/collections/data/FakeCheckListDataRepository.ktasset3,853 bytes
  • ../../../system/glance-canonical-layouts/references/collections/data/FakeImageGridDataRepository.ktasset8,375 bytes
  • ../../../system/glance-canonical-layouts/references/collections/data/FakeImageTextListDataRepository.ktasset7,330 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/ActionListLayout.ktasset20,141 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/CheckListLayout.ktasset17,067 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/EmptyListContent.ktasset900 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/ImageGridLayout.ktasset13,655 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/ImageTextListLayout.ktasset17,444 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/ListItem.ktasset3,168 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/NoDataContent.ktasset2,765 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/RoundedScrollingLazyColumn.ktasset2,875 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/RoundedScrollingLazyVerticalGrid.ktasset4,354 bytes
  • ../../../system/glance-canonical-layouts/references/collections/layout/VerticalListItem.ktasset3,507 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/four_side_cookie_background.xmlasset1,445 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_ac_icon.xmlasset1,385 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_add_icon.xmlasset315 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_app_logo.xmlasset1,120 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_arrow_right_icon.xmlasset365 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_bulb_icon.xmlasset651 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_camera_icon.xmlasset1,235 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_checked_circle_icon.xmlasset402 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_circle_icon.xmlasset415 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_delete_icon.xmlasset389 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_door_icon.xmlasset810 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_edit_icon.xmlasset520 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_file_upload_icon.xmlasset1,062 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_grid_icon.xmlasset968 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_heart_icon.xmlasset1,149 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_home_icon.xmlasset517 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_image_icon.xmlasset846 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_info_icon.xmlasset449 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_mic_icon.xmlasset1,284 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_no_data_icon.xmlasset546 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_pin_icon.xmlasset488 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_power_settings_icon.xmlasset499 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_refresh_icon.xmlasset490 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_scrim_gradient.xmlasset1,476 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_search_icon.xmlasset1,184 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_share_icon.xmlasset711 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_snooze_icon.xmlasset569 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_text_icon.xmlasset491 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_thermostat_icon.xmlasset937 bytes
  • ../../../system/glance-canonical-layouts/references/res/drawable/sample_videocam_icon.xmlasset1,066 bytes
  • ../../../system/glance-canonical-layouts/references/res/values/dimens.xmlasset8,589 bytes
  • ../../../system/glance-canonical-layouts/references/res/values/strings.xmlasset5,985 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_action_list_widget_info.xmlasset1,753 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_check_list_widget_info.xmlasset1,817 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_expressive_toolbar_widget_info.xmlasset1,649 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_full_bleed_image_widget_info.xmlasset1,432 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_image_grid_widget_info.xmlasset1,744 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_image_text_list_widget_info.xmlasset1,829 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_long_text_widget_info.xmlasset1,511 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_search_toolbar_widget_info.xmlasset1,584 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_text_with_image_widget_info.xmlasset1,588 bytes
  • ../../../system/glance-canonical-layouts/references/res/xml/sample_toolbar_widget_info.xmlasset1,550 bytes
  • ../../../system/glance-canonical-layouts/references/text/FullBleedImageAppWidget.ktasset3,625 bytes
  • ../../../system/glance-canonical-layouts/references/text/LongTextAppWidget.ktasset3,160 bytes
  • ../../../system/glance-canonical-layouts/references/text/TextWithImageAppWidget.ktasset3,864 bytes
  • ../../../system/glance-canonical-layouts/references/text/data/FakeLongTextRespository.ktasset3,036 bytes
  • ../../../system/glance-canonical-layouts/references/text/data/FakeTextWithImageRepository.ktasset6,069 bytes
  • ../../../system/glance-canonical-layouts/references/text/layout/FullBleedImageLayout.ktasset7,884 bytes
  • ../../../system/glance-canonical-layouts/references/text/layout/LongTextLayout.ktasset12,115 bytes
  • ../../../system/glance-canonical-layouts/references/text/layout/TextWithImageLayout.ktasset17,290 bytes
  • ../../../system/glance-canonical-layouts/references/toolbars/ExpressiveToolbarAppWidget.ktasset3,815 bytes
  • ../../../system/glance-canonical-layouts/references/toolbars/SearchToolBarAppWidget.ktasset3,275 bytes
  • ../../../system/glance-canonical-layouts/references/toolbars/ToolBarAppWidget.ktasset3,504 bytes
  • ../../../system/glance-canonical-layouts/references/toolbars/layout/Buttons.ktasset4,752 bytes
  • ../../../system/glance-canonical-layouts/references/toolbars/layout/ExpressiveToolbarLayout.ktasset15,231 bytes
  • ../../../system/glance-canonical-layouts/references/toolbars/layout/LayoutComponents.ktasset5,693 bytes
  • ../../../system/glance-canonical-layouts/references/toolbars/layout/SearchToolBarLayout.ktasset14,998 bytes
  • ../../../system/glance-canonical-layouts/references/toolbars/layout/ToolBarLayout.ktasset16,248 bytes
  • ../../../system/glance-canonical-layouts/references/ui/theme/Color.ktasset313 bytes
  • ../../../system/glance-canonical-layouts/references/ui/theme/Theme.ktasset2,122 bytes
  • ../../../system/glance-canonical-layouts/references/ui/theme/Type.ktasset992 bytes
  • ../../../system/glance-canonical-layouts/references/utils/ActionUtils.ktasset780 bytes
  • ../../../system/glance-canonical-layouts/references/utils/FontUtils.ktasset3,573 bytes
  • ../../../system/glance-canonical-layouts/references/utils/ImageAspectRatio.ktasset1,063 bytes
  • ../../../system/glance-canonical-layouts/references/utils/ImageUtils.ktasset5,383 bytes
  • ../../../system/glance-canonical-layouts/references/utils/PreviewAnnotations.ktasset3,064 bytes
  • ../../../testing/testing-setup/SKILL.mddoc10,232 bytes
  • ../../../testing/testing-setup/references/android/develop/ui/compose/testing/common-patterns.mddoc15,215 bytes
  • ../../../testing/testing-setup/references/android/studio/preview/compose-screenshot-testing-with-testsuites.mddoc7,507 bytes
  • ../../../testing/testing-setup/references/android/studio/preview/compose-screenshot-testing.mddoc13,004 bytes
  • ../../../testing/testing-setup/references/android/training/dependency-injection/hilt-testing.mddoc14,864 bytes
  • ../../../tv/leanback-to-compose-tv-migration/SKILL.mddoc34,769 bytes
  • ../../../tv/leanback-to-compose-tv-migration/references/android/training/tv/get-started/navigation.mddoc17,347 bytes
  • ../../../tv/leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/browse.mddoc9,942 bytes
  • ../../../tv/leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/index.mddoc7,814 bytes
  • ../../../wear/wear-compose-m3/SKILL.mddoc39,165 bytes
  • ../../../wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.mddoc91,192 bytes
  • ../../../wear/wear-compose-m3/references/foundation/AmbientModeSample.kt.mddoc5,141 bytes
  • ../../../wear/wear-compose-m3/references/foundation/CurvedWorldSample.kt.mddoc14,684 bytes
  • ../../../wear/wear-compose-m3/references/foundation/ExpandableSample.kt.mddoc3,708 bytes
  • ../../../wear/wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.mddoc5,503 bytes
  • ../../../wear/wear-compose-m3/references/foundation/PagerSamples.kt.mddoc2,076 bytes
  • ../../../wear/wear-compose-m3/references/foundation/RotarySamples.kt.mddoc6,161 bytes
  • ../../../wear/wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.mddoc7,493 bytes
  • ../../../wear/wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.mddoc13,194 bytes
  • ../../../wear/wear-compose-m3/references/material3/AlertDialogSample.kt.mddoc12,815 bytes
  • ../../../wear/wear-compose-m3/references/material3/AnimatedTextSample.kt.mddoc6,347 bytes
  • ../../../wear/wear-compose-m3/references/material3/ButtonGroupSample.kt.mddoc3,381 bytes
  • ../../../wear/wear-compose-m3/references/material3/ButtonSample.kt.mddoc17,413 bytes
  • ../../../wear/wear-compose-m3/references/material3/CardSample.kt.mddoc15,525 bytes
  • ../../../wear/wear-compose-m3/references/material3/CheckboxButtonSample.kt.mddoc2,368 bytes
  • ../../../wear/wear-compose-m3/references/material3/ConfirmationDialogSample.kt.mddoc5,511 bytes
  • ../../../wear/wear-compose-m3/references/material3/CurvedTextSamples.kt.mddoc2,930 bytes
  • ../../../wear/wear-compose-m3/references/material3/DatePickerSample.kt.mddoc4,845 bytes
  • ../../../wear/wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.mddoc3,103 bytes
  • ../../../wear/wear-compose-m3/references/material3/EdgeButtonSample.kt.mddoc2,360 bytes
  • ../../../wear/wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.mddoc2,185 bytes
  • ../../../wear/wear-compose-m3/references/material3/IconButtonSample.kt.mddoc3,973 bytes
  • ../../../wear/wear-compose-m3/references/material3/IconToggleButtonSample.kt.mddoc3,706 bytes
  • ../../../wear/wear-compose-m3/references/material3/LevelIndicatorSample.kt.mddoc2,556 bytes
  • ../../../wear/wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.mddoc1,812 bytes
  • ../../../wear/wear-compose-m3/references/material3/ListHeaderSample.kt.mddoc7,816 bytes
  • ../../../wear/wear-compose-m3/references/material3/OneHandedGestureSamples.kt.mddoc32,291 bytes
  • ../../../wear/wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.mddoc2,045 bytes
  • ../../../wear/wear-compose-m3/references/material3/PageIndicatorSample.kt.mddoc4,237 bytes
  • ../../../wear/wear-compose-m3/references/material3/PagerScaffoldSample.kt.mddoc8,689 bytes
  • ../../../wear/wear-compose-m3/references/material3/PickerGroupSample.kt.mddoc5,980 bytes
  • ../../../wear/wear-compose-m3/references/material3/PickerSample.kt.mddoc3,734 bytes
  • ../../../wear/wear-compose-m3/references/material3/PlaceholderSample.kt.mddoc6,658 bytes
  • ../../../wear/wear-compose-m3/references/material3/ProgressIndicatorSample.kt.mddoc9,060 bytes
  • ../../../wear/wear-compose-m3/references/material3/RadioButtonSample.kt.mddoc4,254 bytes
  • ../../../wear/wear-compose-m3/references/material3/ScaffoldSample.kt.mddoc6,311 bytes
  • ../../../wear/wear-compose-m3/references/material3/ScrollAwaySample.kt.mddoc3,839 bytes
  • ../../../wear/wear-compose-m3/references/material3/ScrollIndicatorSample.kt.mddoc2,498 bytes
  • ../../../wear/wear-compose-m3/references/material3/SliderSample.kt.mddoc2,468 bytes
  • ../../../wear/wear-compose-m3/references/material3/StepperSample.kt.mddoc5,281 bytes
  • ../../../wear/wear-compose-m3/references/material3/SurfaceTransformationSample.kt.mddoc6,184 bytes
  • ../../../wear/wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.mddoc7,443 bytes
  • ../../../wear/wear-compose-m3/references/material3/SwipeToRevealSample.kt.mddoc14,017 bytes
  • ../../../wear/wear-compose-m3/references/material3/SwitchButtonSample.kt.mddoc2,311 bytes
  • ../../../wear/wear-compose-m3/references/material3/TextButtonSample.kt.mddoc3,029 bytes
  • ../../../wear/wear-compose-m3/references/material3/TextToggleButtonSample.kt.mddoc2,326 bytes
  • ../../../wear/wear-compose-m3/references/material3/TimePickerSample.kt.mddoc5,669 bytes
  • ../../../wear/wear-compose-m3/references/material3/TimeTextSample.kt.mddoc2,584 bytes
  • ../../../wear/wear-compose-m3/references/material3/TransformationSpecSample.kt.mddoc10,178 bytes
  • ../../../wear/wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.mddoc3,769 bytes
  • ../../../wear/wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.mddoc13,321 bytes
  • ../../../wear/wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.mddoc8,513 bytes
  • ../../../wear/wear-widgets/SKILL.mddoc12,839 bytes
  • ../../../wear/wear-widgets/references/previews-and-testing.mddoc5,569 bytes
  • ../../../wear/wear-widgets/references/remote-compose-layouts.mddoc8,157 bytes
  • ../../../wear/wear-widgets/references/state-and-actions.mddoc5,713 bytes
  • ../../../wear/wear-widgets/references/widget-service-and-manifest.mddoc4,644 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/SKILL.mddoc26,265 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/android/design/ui/ai-glasses/guides/interaction/inputs.mddoc4,667 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.mddoc19,066 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/buttons.mddoc8,349 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/cards.mddoc6,930 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/focus.mddoc5,695 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icons.mddoc4,123 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/text.mddoc2,800 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/title-chips.mddoc3,788 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/request-hardware-permissions.mddoc9,331 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/button-samples-source.mddoc5,066 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/button-source.mddoc9,966 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/card-samples-source.mddoc10,589 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/card-source.mddoc52,963 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/deptheffect-source.mddoc7,986 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/deptheffectlevels-source.mddoc4,190 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/glimmersansflextypography-source.mddoc11,526 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/glimmertheme-source.mddoc7,738 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/icon-source.mddoc17,247 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/iconbutton-source.mddoc4,960 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/iconsizes-source.mddoc2,371 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/list-source.mddoc713 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/listitem-source.mddoc11,455 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/liststate-source.mddoc18,231 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/material-hct-source.mddoc6,458 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/projectedcontext-source.mddoc13,251 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/stack-source.mddoc15,672 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/stackitemscope-source.mddoc16,578 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/stackstate-source.mddoc13,164 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/surface-source.mddoc33,121 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/titlechip-samples-source.mddoc2,920 bytes
  • ../../../xr/display-glasses-with-jetpack-compose-glimmer/references/titlechip-source.mddoc5,254 bytes
  • ../../../xr/projected-hardware/SKILL.mddoc2,090 bytes
  • ../../../xr/projected-hardware/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.mddoc19,066 bytes
  • ../../../xr/projected-hardware/references/android/develop/xr/jetpack-xr-sdk/glasses/check-availability.mddoc4,831 bytes
  • ../../../xr/projected-hardware/references/android/develop/xr/jetpack-xr-sdk/glasses/support-different-types.mddoc8,663 bytes
  • ../../../xr/projected-hardware/references/android/develop/xr/jetpack-xr-sdk/request-hardware-permissions.mddoc9,331 bytes
Read SKILL.md

## Migration guide

See the [AGP 9 migration guide](references/android/build/releases/agp-9-0-0-release-notes.md) for the major changes, many
breaking, in AGP 9 compared to AGP 8.

## Requirements

If the user requests to update or migrate to AGP 9, first check the AGP version
used in the project. If it is lower than 9, stop and ask the user to run the AGP
Upgrade Assistant in Android Studio to update to the latest stable version of
AGP, and confirm when done. The user may also request that this requirement be
skipped; if this is the case, you should update the version of AGP to the latest
stable version as part of the AGP 9 migration. See the
[AGP 9 migration guide](references/android/build/releases/agp-9-0-0-release-notes.md) for how to do this.
View the complete source on GitHub

Skills included

  • agp-9-upgrade
  • camerax
  • android-for-cars-parked-apps
  • appfunctions
  • litert-lm
  • litert-runtime
  • ml-kit-genai-prompt-api
  • mlkit-agent-api
  • android-cli
  • restore-credentials
  • verified-email
  • adaptive
  • ink-app-builder
  • ink-custom-brush-builder
  • jetpack-compose-performance
  • migrate-xml-views-to-jetpack-compose
  • media3-cast-integration
  • navigation-3
  • navigation-event
  • anr-audit-and-fix
  • r8-analyzer
  • engage-sdk-integration
  • play-billing-library-version-upgrade
  • play-policy-insights
  • android-profiler
  • android-intent-security
  • android-permissions-security
  • edge-to-edge
  • glance-appwidget-updates-and-memory
  • glance-canonical-layouts
  • testing-setup
  • leanback-to-compose-tv-migration
  • wear-compose-m3
  • wear-widgets
  • display-glasses-with-jetpack-compose-glimmer
  • projected-hardware

Repository facts

License
Apache-2.0
Created
Mar 16, 2026
Last pushed
Nov 5, 2026
Forks
675
Open issues
36
Project activity
Active

Rank over the last 12 weeks

Now #149 · best #146 · up 18 in 30 days

  1. #146 from Oct 28 to Oct 29
  2. #147 from Oct 30 to Oct 31
  3. #146 on Nov 1
  4. #147 on Nov 2
  5. #150 on Nov 3
  6. #149 since Nov 4
66 earlier periods
  1. #160 on Aug 2
  2. #157 on Aug 7
  3. #158 on Aug 8
  4. #157 on Aug 9
  5. #160 on Aug 10
  6. #161 on Aug 11
  7. #159 on Aug 12
  8. #161 from Aug 13 to Aug 14
  9. #160 from Aug 15 to Aug 16
  10. #159 on Aug 17
  11. #160 from Aug 18 to Aug 19
  12. #158 from Aug 20 to Aug 21
  13. #155 on Aug 22
  14. #160 from Aug 23 to Aug 24
  15. #159 from Aug 25 to Aug 26
  16. #160 on Aug 27
  17. #159 on Aug 28
  18. #160 on Aug 29
  19. #158 on Aug 30
  20. #157 on Aug 31
  21. #160 on Sep 1
  22. #157 on Sep 2
  23. #162 on Sep 3
  24. #160 on Sep 4
  25. #163 on Sep 5
  26. #160 on Sep 6
  27. #162 from Sep 7 to Sep 8
  28. #163 on Sep 9
  29. #164 on Sep 10
  30. #161 on Sep 11
  31. #165 from Sep 12 to Sep 13
  32. #163 on Sep 14
  33. #164 on Sep 15
  34. #163 from Sep 16 to Sep 17
  35. #164 on Sep 18
  36. #162 on Sep 19
  37. #165 on Sep 20
  38. #164 on Sep 21
  39. #163 on Sep 22
  40. #165 on Sep 23
  41. #164 on Sep 24
  42. #165 on Sep 25
  43. #166 from Sep 26 to Sep 27
  44. #167 from Sep 28 to Sep 29
  45. #164 on Sep 30
  46. #166 on Oct 1
  47. #167 on Oct 2
  48. #165 on Oct 3
  49. #163 on Oct 4
  50. #165 from Oct 5 to Oct 6
  51. #167 on Oct 7
  52. #165 on Oct 8
  53. #168 on Oct 9
  54. #165 on Oct 10
  55. #167 on Oct 11
  56. #168 on Oct 12
  57. #170 on Oct 13
  58. #169 on Oct 14
  59. #168 on Oct 15
  60. #163 on Oct 16
  61. #158 on Oct 17
  62. #155 from Oct 18 to Oct 21
  63. #151 on Oct 22
  64. #150 on Oct 23
  65. #149 on Oct 24
  66. #150 on Oct 25

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 3, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 62 notes
  • build-system/agp/agp-9-upgrade/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • build-system/agp/agp-9-upgrade/references/android/build/releases/agp-9-0-0-release-notes.md:553 Analysis incomplete: physical or joined line exceeds character limit
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:258 Analysis incomplete: physical or joined line exceeds character limit
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:259 Analysis incomplete: physical or joined line exceeds character limit
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:260 Analysis incomplete: physical or joined line exceeds character limit
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:268 Analysis incomplete: physical or joined line exceeds character limit
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:269 Analysis incomplete: physical or joined line exceeds character limit
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:270 Analysis incomplete: physical or joined line exceeds character limit
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:258 Plugin-wide analysis incomplete; see repository notes
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:258 Plugin-wide analysis incomplete; see repository notes
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:258 Plugin-wide analysis incomplete; see repository notes
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:258 Plugin-wide analysis incomplete; see repository notes
  • device-ai/litert/litert-runtime/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:258 Plugin-wide analysis incomplete; see repository notes
  • wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md:258 Plugin-wide analysis incomplete; see repository notes
  • devtools/android-cli/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • devtools/android-cli/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • devtools/android-cli/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • devtools/android-cli/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • devtools/android-cli/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 10,211 signals by file

.claude-plugin/marketplace.json

  • Network accessline 14
    "category": "development",       "source": "./",       "homepage": "https://github.com/android/skills",
  • Network accessline 15
    "source": "./",       "homepage": "https://github.com/android/skills",       "license": "Apache-2.0"
  • Network accessline 16
    "homepage": "https://github.com/android/skills",

.claude-plugin/plugin.json

  • Network accessline 6
    "author": {     "name": "Google / Android",     "url": "https://github.com/android"
  • Network accessline 7
    "name": "Google / Android",     "url": "https://github.com/android"   },
  • Network accessline 8
    "url": "https://github.com/android"
  • Network accessline 9
    },   "homepage": "https://github.com/android/skills",   "repository": "https://github.com/android/skills",
  • Network accessline 10
    "homepage": "https://github.com/android/skills",
  • Network accessline 11
    "repository": "https://github.com/android/skills",

build-system/agp/agp-9-upgrade/references/android/build/migrate-to-built-in-kotlin.md

  • Network accessline 8
    > [!NOTE] > **Note:** Built-in Kotlin replaces the `kotlin-android` plugin only. If you are writing a Kotlin Multiplatform (KMP) library module, you still need to apply the `org.jetbrains.kotlin.multiplatform` plugin and the [`com.android.k
  • Network accessline 9
    > **Note:** Built-in Kotlin replaces the `kotlin-android` plugin only. If you are writing a Kotlin Multiplatform (KMP) library module, you still need to apply the `org.jetbrains.kotlin.multiplatform` plugin and the [`com.android.kotlin.mult
  • Network accessline 14
    AGP 9.0 already enables built-in Kotlin for all your modules where you apply AGP, so you don't need to do anything to enable it. However, if you previously [opted out of built-in Kotlin](https://developer.android.com/build/migrate-to-built-
  • Network accessline 15
    AGP, so you don't need to do anything to enable it. However, if you previously [opted out of built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin#opt-out-of-built-in-kotlin) by setting `android.builtInKotlin=false
  • Network accessline 16
    [opted out of built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin#opt-out-of-built-in-kotlin) by setting `android.builtInKotlin=false`
  • Network accessline 20
    > [!NOTE] > **Note:** You can also enable built-in Kotlin for [one module at a time](https://developer.android.com/build/migrate-to-built-in-kotlin#module-by-module-migration).
  • Network accessline 21
    > **Note:** You can also enable built-in Kotlin for [one module at a time](https://developer.android.com/build/migrate-to-built-in-kotlin#module-by-module-migration).
  • Network accessline 28
    After you upgrade your project from an older AGP version to AGP 9.0 or after you manually [enable built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin#enable-built-in-kotlin), you might see the following error
  • Network accessline 29
    you manually [enable built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin#enable-built-in-kotlin), you might see the following error
  • Network accessline 43
    > [!NOTE] > **Note:** If you're not yet ready to migrate your project, you can also [opt out of built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin#opt-out-of-built-in-kotlin).
  • Network accessline 44
    > **Note:** If you're not yet ready to migrate your project, you can also [opt out of built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin#opt-out-of-built-in-kotlin).
  • Network accessline 46
    1. [Remove the `kotlin-android` plugin](https://developer.android.com/build/migrate-to-built-in-kotlin#migration-steps-remove-kotlin-android-plugin)
  • Network accessline 47
    2. [Migrate the `kotlin-kapt` plugin if necessary](https://developer.android.com/build/migrate-to-built-in-kotlin#migration-steps-migrate-kotlin-kapt-plugin)
  • Network accessline 48
    3. [Migrate the `android.kotlinOptions{}` DSL if necessary](https://developer.android.com/build/migrate-to-built-in-kotlin#migration-steps-migrate-kotlin-options)
  • Network accessline 49
    4. [Migrate the `kotlin.sourceSets{}` DSL if necessary](https://developer.android.com/build/migrate-to-built-in-kotlin#migration-steps-migrate-kotlin-source-sets)
  • Network accessline 54
    the module-level build files where you apply it. The exact code to remove depends on whether you use [version catalogs](https://docs.gradle.org/current/userguide/version_catalogs.html) to declare plugins.
  • Network accessline 56
    whether you use [version catalogs](https://docs.gradle.org/current/userguide/version_catalogs.html) to declare plugins.
  • Network accessline 150
    The `org.jetbrains.kotlin.kapt` (or `kotlin-kapt`) plugin is incompatible with built-in Kotlin. If you use `kapt`, we recommend that you [migrate your project to KSP](https://developer.android.com/build/migrate-to-ksp).
  • Network accessline 152
    [migrate your project to KSP](https://developer.android.com/build/migrate-to-ksp).
  • Network accessline 219
    If you use the `android.kotlinOptions{}` DSL, you need to migrate it to the [`kotlin.compilerOptions{}`](https://kotlinlang.org/docs/gradle-compiler-options.html#migrate-from-kotlinoptions-to-compileroptions) DSL.
  • Network accessline 220
    migrate it to the [`kotlin.compilerOptions{}`](https://kotlinlang.org/docs/gradle-compiler-options.html#migrate-from-kotlinoptions-to-compileroptions) DSL.
  • Network accessline 277
    When you use the `kotlin-android` plugin, AGP lets you add additional Kotlin source directories using either the [`android.sourceSets{}`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/AndroidSourceSe
  • Network accessline 278
    source directories using either the [`android.sourceSets{}`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/AndroidSourceSet) DSL or the
  • Network accessline 279
    [`kotlin.sourceSets{}`](https://kotlinlang.org/api/kotlin-gradle-plugin/kotlin-gradle-plugin-api/org.jetbrains.kotlin.gradle.plugin/-kotlin-source-set/) DSL.
  • Network accessline 325
    If you want to add a Kotlin source directory to a specific variant or if the directory is generated by a task, you can use the [`addStaticSourceDirectory`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/v
  • Network accessline 326
    directory is generated by a task, you can use the [`addStaticSourceDirectory`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/SourceDirectories#addStaticSourceDirectory(kotlin.String)) or [`addGen
  • Network accessline 327
    [`addStaticSourceDirectory`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/SourceDirectories#addStaticSourceDirectory(kotlin.String)) or [`addGeneratedSourceDirectory`](https://developer.android.
  • Network accessline 328
    in the [variant API](https://developer.android.com/build/extend-agp#variant-api-artifacts-tasks):
  • Network accessline 350
    If you encounter issues after completing the previous steps, review the known issues in [issue #438678642](https://issuetracker.google.com/438678642) and give us
  • Network accessline 351
    review the known issues in [issue #438678642](https://issuetracker.google.com/438678642) and give us
  • Network accessline 362
    > [!NOTE] > **Note:** You also need to set `android.newDsl=false` to opt out of the [new DSL](https://developer.android.com/r/tools/new-dsl) because the `kotlin-android` plugin is not compatible with it.
  • Network accessline 363
    > **Note:** You also need to set `android.newDsl=false` to opt out of the [new DSL](https://developer.android.com/r/tools/new-dsl) because the `kotlin-android` plugin is not compatible with it.
  • Network accessline 365
    Once you're ready to migrate your project, [enable built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin#enable-built-in-kotlin)
  • Network accessline 366
    and follow the [migration steps](https://developer.android.com/build/migrate-to-built-in-kotlin#migration-steps).
  • Network accessline 383
    3. Follow the previous [migration steps](https://developer.android.com/build/migrate-to-built-in-kotlin#migration-steps) to migrate this module to

build-system/agp/agp-9-upgrade/references/android/build/releases/agp-9-0-0-release-notes.md

  • Network accessline 6
    To update to Android Gradle plugin 9.0.1, use the [Android Gradle plugin Upgrade Assistant](https://developer.android.com/build/agp-upgrade-assistant). The AGP upgrade assistant helps
  • Network accessline 7
    [Android Gradle plugin Upgrade Assistant](https://developer.android.com/build/agp-upgrade-assistant). The AGP upgrade assistant helps
  • Network accessline 12
    There are also two agent skills available to make the upgrade process easier. For a non-KMP app, try the [AGP 9 upgrade skill](https://github.com/android/skills/tree/main/build-system/agp/agp-9-upgrade) from the
  • Network accessline 13
    For a non-KMP app, try the [AGP 9 upgrade skill](https://github.com/android/skills/tree/main/build-system/agp/agp-9-upgrade) from the
  • Network accessline 14
    Android skills repository. For a KMP app, try the [AGP 9 upgrade skill](https://github.com/Kotlin/kotlin-agent-skills/tree/main/skills/kotlin-tooling-agp9-migration) from JetBrains. For more information about using skills in Android Studio,
  • Network accessline 15
    skill](https://github.com/Kotlin/kotlin-agent-skills/tree/main/skills/kotlin-tooling-agp9-migration) from JetBrains. For more information about using skills
  • Network accessline 16
    in Android Studio, see [Extend Agent Mode with skills](https://developer.android.com/studio/gemini/skills).
  • Network accessline 24
    |   | Minimum version | Default version | Notes | |---:|:---:|:---:|:---:| | Gradle | 9.1.0 | 9.1.0 | To learn more, see [updating Gradle](https://developer.android.com/build/releases/gradle-plugin?buildsystem=ndk-build#updating-gradle). |
  • Network accessline 25
    |---:|:---:|:---:|:---:| | Gradle | 9.1.0 | 9.1.0 | To learn more, see [updating Gradle](https://developer.android.com/build/releases/gradle-plugin?buildsystem=ndk-build#updating-gradle). | | SDK Build Tools | 36.0.0 | 36.0.0 | [Install](ht
  • Network accessline 26
    | Gradle | 9.1.0 | 9.1.0 | To learn more, see [updating Gradle](https://developer.android.com/build/releases/gradle-plugin?buildsystem=ndk-build#updating-gradle). |
  • Network accessline 27
    | SDK Build Tools | 36.0.0 | 36.0.0 | [Install](https://developer.android.com/studio/intro/update#sdk-manager) or [configure](https://developer.android.com/tools/releases/build-tools) SDK Build Tools. |
  • Network accessline 28
    | NDK | N/A | 28.2.13676358 | [Install](https://developer.android.com/studio/projects/install-ndk#specific-version) or [configure](https://developer.android.com/studio/projects/install-ndk#apply-specific-version) a different version of the 
  • Network accessline 29
    | JDK | 17 | 17 | To learn more, see [setting the JDK version](https://developer.android.com/studio/intro/studio-config#jdk). |
  • Network accessline 30
    | Kotlin Gradle plugin (KGP) | 2.2.10 | 2.2.10 | To learn more, see [Runtime dependency on Kotlin Gradle plugin](https://developer.android.com/build/releases/agp-9-0-0-release-notes#runtime-dependency-on-kotlin-gradle-plugin). |
  • Network accessline 36
    Over the last several years, we have introduced [new interfaces](https://developer.android.com/reference/tools/gradle-api) for our DSL and API in order to
  • Network accessline 37
    [new interfaces](https://developer.android.com/reference/tools/gradle-api) for our DSL and API in order to
  • Network accessline 49
    - **Ensure your project is compatible with [built-in   Kotlin](https://developer.android.com/build/releases/agp-9-0-0-release-notes#android-gradle-plugin-built-in-kotlin):** The `org.jetbrains.kotlin.android` plugin is not compatible with t
  • Network accessline 50
    Kotlin](https://developer.android.com/build/releases/agp-9-0-0-release-notes#android-gradle-plugin-built-in-kotlin):** The `org.jetbrains.kotlin.android` plugin is not compatible with the new DSL.
  • Network accessline 51
    - **Switch KMP projects to the   [Android Gradle Library Plugin for KMP](https://developer.android.com/kotlin/multiplatform/plugin):**   Using the `org.jetbrains.kotlin.multiplatform` plugin in the same Gradle
  • Network accessline 52
    [Android Gradle Library Plugin for KMP](https://developer.android.com/kotlin/multiplatform/plugin):**
  • Network accessline 61
    While the change of interfaces is meant to keep   the DSL as similar as possible, there might be   [some small changes](https://developer.android.com/build/releases/agp-9-0-0-release-notes#android-gradle-plugin-changed-dsl).
  • Network accessline 63
    [some small changes](https://developer.android.com/build/releases/agp-9-0-0-release-notes#android-gradle-plugin-changed-dsl).
  • Network accessline 67
    In most cases this will be a one-to-one replacement.   Replace any use of the `applicationVariants` and similar APIs with the new   [`androidComponents` API](https://developer.android.com/build/extend-agp#variant-api-artifacts-tasks).
  • Network accessline 68
    Replace any use of the `applicationVariants` and similar APIs with the new   [`androidComponents` API](https://developer.android.com/build/extend-agp#variant-api-artifacts-tasks).   This might be more complex, as the `androidComponents` API
  • Network accessline 69
    [`androidComponents` API](https://developer.android.com/build/extend-agp#variant-api-artifacts-tasks).
  • Network accessline 70
    This might be more complex, as the `androidComponents` API   is designed to be more stable to keep plugins compatible longer. Check our   [Gradle Recipes](https://github.com/android/gradle-recipes/tree/agp-9.0)
  • Network accessline 71
    is designed to be more stable to keep plugins compatible longer. Check our   [Gradle Recipes](https://github.com/android/gradle-recipes/tree/agp-9.0)   for examples.
  • Network accessline 72
    [Gradle Recipes](https://github.com/android/gradle-recipes/tree/agp-9.0)
  • Network accessline 83
    | Deprecated API in the `android` block | Function | Replacement | |---|---|---| | `applicationVariants`, `libraryVariants`, `testVariants`, and `unitTestVariants` | Extension points for plugins to add new functionality to AGP. | Replace th
  • Network accessline 84
    |---|---|---| | `applicationVariants`, `libraryVariants`, `testVariants`, and `unitTestVariants` | Extension points for plugins to add new functionality to AGP. | Replace this with the [`androidComponents.onVariants`](https://developer.andr
  • Network accessline 85
    | `applicationVariants`, `libraryVariants`, `testVariants`, and `unitTestVariants` | Extension points for plugins to add new functionality to AGP. | Replace this with the [`androidComponents.onVariants`](https://developer.android.com/refere
  • Network accessline 86
    | `variantFilter` | Allows selected variants to be disabled. | Replace this with the [`androidComponents.beforeVariants`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/AndroidComponentsExtension#
  • Network accessline 87
    | `deviceProvider` and `testServer` | Registration of custom test environments for running tests against Android devices and emulators. | Switch to [Gradle-managed devices](https://developer.android.com/studio/test/gradle-managed-devices). 
  • Network accessline 88
    | `sdkDirectory`, `ndkDirectory`, `bootClasspath`, `adbExecutable`, and `adbExe` | Using various components of the Android SDK for custom tasks. | Switch to [`androidComponents.sdkComponents`](https://developer.android.com/reference/tools/g
  • Network accessline 89
    | `registerArtifactType`, `registerBuildTypeSourceProvider`, `registerProductFlavorSourceProvider`, `registerJavaArtifact`, `registerMultiFlavorSourceProvider`, and `wrapJavaSourceSet` | Obsolete functionality mostly related to the handling
  • Network accessline 90
    | `dexOptions` | Obsolete settings related to the `dx` tool, which has been replaced by [`d8`](https://developer.android.com/tools/d8). None of the settings have had any effect since Android Gradle plugin 7.0. | There is no direct replaceme
  • Network accessline 92
    | `aidlPackagedList` | AIDL files to package in the AAR to expose it as API for libraries and apps that depend on this library. | This is still exposed on [`LibraryExtension`](https://developer.android.com/reference/tools/gradle-api/9.0/com
  • Network accessline 108
    Alternatively, for a more gradual migration, AGP 9.4 lets you opt out individual modules. To learn how, see [Variant API module opt-out](https://developer.android.com/build/releases/agp-9-4-0-release-notes#new-dsl-opt-out).
  • Network accessline 109
    modules. To learn how, see [Variant API module opt-out](https://developer.android.com/build/releases/agp-9-4-0-release-notes#new-dsl-opt-out).
  • Network accessline 118
    You can also start upgrading to the new APIs before upgrading to AGP 9.0. The new interfaces have been present for many AGP versions and so you can have a mix of new and old. The [AGP API reference docs](https://developer.android.com/refere
  • Network accessline 119
    new interfaces have been present for many AGP versions and so you can have a mix of new and old. The [AGP API reference docs](https://developer.android.com/reference/tools/gradle-api) show the API surface for each AGP version, and when each
  • Network accessline 120
    of new and old. The [AGP API reference docs](https://developer.android.com/reference/tools/gradle-api) show the API
  • Network accessline 129
    If you find that the new DSL or Variant API are missing capabilities or features, please file an [issue](https://issuetracker.google.com/issues/new?component=192708&template=840533) as soon as possible.
  • Network accessline 130
    features, please file an [issue](https://issuetracker.google.com/issues/new?component=192708&template=840533) as soon as possible.
  • Network accessline 141
    Therefore, when you upgrade your project to AGP 9.0, you need to also [migrate to built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin) or [opt out](https://developer.android.com/build/migrate-to-built-in-kotlin#o
  • Network accessline 142
    [migrate to built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin) or [opt out](https://developer.android.com/build/migrate-to-built-in-kotlin#opt-out-of-built-in-kotlin).
  • Network accessline 144
    You can also [selectively disable built-in Kotlin support](https://developer.android.com/build/migrate-to-built-in-kotlin#selectively-disable) for Gradle
  • Network accessline 149
    To provide [built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin) support, Android Gradle plugin 9.0 now has a
  • Network accessline 174
    You can only downgrade the KGP version if you've [opted out of built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin#opt-out-of-built-in-kotlin).
  • Network accessline 175
    [opted out of built-in Kotlin](https://developer.android.com/build/migrate-to-built-in-kotlin#opt-out-of-built-in-kotlin).
  • Network accessline 179
    To use a lower version of KGP or KSP, declare that version in your top-level build file using a [strict version](https://docs.gradle.org/current/userguide/dependency_versions.html#sec:strict-version) declaration:
  • Network accessline 180
    build file using a [strict version](https://docs.gradle.org/current/userguide/dependency_versions.html#sec:strict-version) declaration:
  • Network accessline 203
    AGP 9.0 brings full Android Studio IDE support for [test fixtures](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/TestFixtures).
  • Network accessline 204
    [test fixtures](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/TestFixtures).
  • Network accessline 212
    For information about getting started, see [Publish multiple Android libraries as one with Fused Library](https://developer.android.com/build/publish-library/fused-library).
  • Network accessline 213
    [Publish multiple Android libraries as one with Fused Library](https://developer.android.com/build/publish-library/fused-library).
  • Network accessline 220
    |---|---| | Android Gradle plugin 9.0 uses NDK version `r28c` by default. | Consider specifying the NDK version you want to use explicitly. | | Android Gradle plugin 9.0 by default requires consumers of a library to use the same or higher c
  • Network accessline 222
    | Android Gradle plugin 9.0 by default requires consumers of a library to use the same or higher compile SDK version. | Use the same or higher compile SDK when consuming a library. If this is not possible, or you want to give consumers of a
  • Network accessline 228
    |---|---|---|---| | `android.newDsl` | Use the new DSL interfaces, without exposing the legacy implementations of the `android` block. This also means the legacy variant API, such as `android.applicationVariants` is no longer accessible. | 
  • Network accessline 229
    | `android.newDsl` | Use the new DSL interfaces, without exposing the legacy implementations of the `android` block. This also means the legacy variant API, such as `android.applicationVariants` is no longer accessible. | `false` → `true` |
  • Network accessline 230
    | `android.builtInKotlin` | Enables [built-in Kotlin](https://developer.android.com/build/releases/agp-9-0-0-release-notes#android-gradle-plugin-built-in-kotlin) | `false` → `true` | [Migrate to built-in Kotlin](https://developer.android.co
  • Network accessline 231
    | `android.uniquePackageNames` | Enforces that each library has a distinct package name. | `false` → `true` | Specify unique package names for all libraries within your project. If that is not possible, you can disable this flag while you m
  • Network accessline 232
    | `android.useAndroidx` | Use [`androidx`](https://developer.android.com/jetpack/androidx) dependencies by default. | `false` → `true` | Adopt [`androidx`](https://developer.android.com/jetpack/androidx/migrate) dependencies. |
  • Network accessline 233
    | `android.default.androidx.test.runner` | Run on-device tests with the [`androidx.test.runner.AndroidJUnitRunner`](https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/runner) class by default, replacin
  • Network accessline 239
    | `android.r8.optimizedResourceShrinking` | Allows R8 to keep fewer Android resources by considering classes and Android resources together. | `false` → `true` | If your project's keep rules are already complete, no change is required. | | 
  • Network accessline 240
    | `android.r8.strictFullModeForKeepRules` | Allows R8 to keep less by not implicitly keeping the default constructor when a class is kept. That is, `-keep class A` no longer implies `-keep class A { <init>(); }` | `false` → `true` | If your
  • Network accessline 241
    | `android.defaults.buildfeatures.resvalues` | Enables [`resValues`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/HasAndroidResources#resValues()) in all subprojects | `true` → `false` | Enable 
  • Network accessline 242
    | `android.defaults.buildfeatures.shaders` | Enables [shader compilation](https://developer.android.com/ndk/guides/graphics/shader-compilers) in all subprojects | `true` → `false` | Enable shader compilation in only the subprojects that con
  • Network accessline 243
    | `android.r8.proguardAndroidTxt.disallowed` | In AGP 9.0, `getDefaultProguardFile()` will only support `proguard-android-optimize.txt` rather than `proguard-android.txt`. This is to prevent accidental usage of the `<U+00AD>dontoptimize` flag, whi
  • Possible obfuscationline 243
    | `android.r8.proguardAndroidTxt.disallowed` | In AGP 9.0, `getDefaultProguardFile()` will only support `proguard-android-optimize.txt` rather than `proguard-android.txt`. This is to prevent accidental usage of the `<U+00AD>dontoptimize` flag, whi
  • Network accessline 244
    | `android.r8.globalOptionsInConsumerRules.disallowed` | From AGP 9.0, Android library and feature module publishing will fail if consumer keep files contain problematic Proguard configurations. Consumer keep files that include global optio
  • Possible obfuscationline 244
    | `android.r8.globalOptionsInConsumerRules.disallowed` | From AGP 9.0, Android library and feature module publishing will fail if consumer keep files contain problematic Proguard configurations. Consumer keep files that include global optio
  • Network accessline 245
    | `android.sourceset.disallowProvider` | Disallow passing providers for generated sources using the [`AndroidSourceSet`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/AndroidSourceSet) DSL. | `false`
  • Network accessline 252
    - **Embedded Wear OS app support**     AGP 9.0 removes support for embedding Wear OS apps, which is no longer supported in Play. This includes removing the `wearApp` configurations and the [`AndroidSourceSet.wearAppConfigurationName`](https
  • Network accessline 253
    AGP 9.0 removes support for embedding Wear OS apps, which is no longer supported in Play. This includes removing the `wearApp` configurations and the [`AndroidSourceSet.wearAppConfigurationName`](https://developer.android.com/reference/tool
  • Network accessline 254
    - **`androidDependencies` and `sourceSets` report task** - **Density split APK support**      AGP 9.0 removes support for creating split APKs based on screen density. The functionality and the related APIs have been removed. To split APKs b
  • Network accessline 256
    AGP 9.0 removes support for creating split APKs based on screen density. The functionality and the related APIs have been removed. To split APKs based on screen density using AGP 9.0 or higher, use [app bundles](https://developer.android.co
  • Network accessline 262
    - The parameterization of [`CommonExtension`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/CommonExtension) has been removed.
  • Network accessline 264
    In itself, this is only a source-level breaking change to help   avoid future source-level breaking changes, but it also means that   the block methods need to move from [`CommonExtension`](https://developer.android.com/reference/tools/grad
  • Network accessline 265
    avoid future source-level breaking changes, but it also means that   the block methods need to move from [`CommonExtension`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/CommonExtension) to   [`Appl
  • Network accessline 266
    the block methods need to move from [`CommonExtension`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/CommonExtension) to
  • Network accessline 267
    [`ApplicationExtension`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/ApplicationExtension), [`LibraryExtension`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/d
  • Network accessline 268
    [`DynamicFeatureExtension`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/DynamicFeatureExtension) and [`TestExtension`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build
  • Network accessline 306
    - [`AndroidSourceSet.jni`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/dsl/AndroidSourceSet#jni(kotlin.Function1)), because it was not functional.
  • Network accessline 308
    - [`AndroidSourceSet.wearAppConfigurationName`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/dsl/AndroidSourceSet#wearAppConfigurationName()), as it relates to the
  • Network accessline 311
    - [`BuildType.isRenderscriptDebuggable`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/dsl/BuildType#isRenderscriptDebuggable()), because it was not functional.
  • Network accessline 313
    - [`DependencyVariantSelection`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/dsl/DependencyVariantSelection). It is replaced By
  • Network accessline 314
    [`DependencySelection`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/DependencySelection), which is exposed as
  • Network accessline 315
    [`kotlin.android.localDependencySelection`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/KotlinMultiplatformAndroidLibraryExtension#localDependencySelection(kotlin.Function1))
  • Network accessline 317
    - [`Installation.installOptions(String)`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/dsl/Installation#installOptions(kotlin.String)). It is replaced by the
  • Network accessline 318
    mutable property of [`Installation.installOptions`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/Installation#installOptions()).
  • Network accessline 320
    - The experimental, but never stabilized [`PostProcessing`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/dsl/PostProcessing) block.
  • Network accessline 322
    - [`ProductFlavor.setDimension`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/dsl/ProductFlavor#setDimension(kotlin.String)), which is replaced by the
  • Network accessline 323
    [`dimension`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/dsl/ProductFlavor#dimension()) property
  • Network accessline 325
    - `LanguageSplitOptions`, which was only useful for   [Google Play Instant](https://developer.android.com/topic/google-play-instant), which is deprecated.
  • Network accessline 326
    [Google Play Instant](https://developer.android.com/topic/google-play-instant), which is deprecated.
  • Network accessline 328
    - [`DensitySplit`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/dsl/DensitySplit), because the feature is no longer supported.
  • Network accessline 329
    Replacement is to use [App Bundles](https://developer.android.com/guide/app-bundle).
  • Network accessline 335
    - [`AndroidComponentsExtension.finalizeDSl`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/AndroidComponentsExtension#finalizeDSl(org.gradle.api.Action)). It is replaced by
  • Network accessline 336
    [`finalizeDsl`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/DslLifecycle#finalizeDsl(kotlin.Function1))
  • Network accessline 338
    - [`Component.transformClassesWith`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/Component#transformClassesWith(java.lang.Class,com.android.build.api.instrumentation.InstrumentationScope,kotli
  • Network accessline 339
    [`Instrumentation.transformClassesWith`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/Instrumentation#transformClassesWith(java.lang.Class,com.android.build.api.instrumentation.InstrumentationSc
  • Network accessline 341
    - [`Component.setAsmFramesComputationMode`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/Component#setAsmFramesComputationMode(com.android.build.api.instrumentation.FramesComputationMode)). It 
  • Network accessline 342
    [`Instrumentation.setAsmFramesComputationMode`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/Instrumentation#setAsmFramesComputationMode(com.android.build.api.instrumentation.FramesComputationM
  • Network accessline 344
    - [`ComponentBuilder.enabled`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/ComponentBuilder#enabled()). It is replaced by
  • Network accessline 345
    [`ComponentBuilder.enable`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/ComponentBuilder#enable()).
  • Network accessline 347
    - [`DependenciesInfoBuilder.includedInApk`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/DependenciesInfoBuilder#includedInApk()). Is is replaced by
  • Network accessline 348
    [`includeInApk`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/DependenciesInfoBuilder#includeInApk())
  • Network accessline 350
    - [`DependenciesInfoBuilder.includedInBundle`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/DependenciesInfoBuilder#includedInBundle()). Is is replaced by
  • Network accessline 351
    [`includeInBundle`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/DependenciesInfoBuilder#includeInBundle())
  • Network accessline 353
    - [`GeneratesApk.targetSdkVersion`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/GeneratesApk#targetSdkVersion()). Is is replaced by [`targetSdk`](https://developer.android.com/reference/tools/
  • Network accessline 355
    - [`Variant.minSdkVersion`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/Variant#minSdkVersion()). Is is replaced by [`minSdk`](https://developer.android.com/reference/tools/gradle-api/9.0/com/
  • Network accessline 357
    - [`Variant.maxSdkVersion`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/Variant#maxSdkVersion()). Is is replaced by [`maxSdk`](https://developer.android.com/reference/tools/gradle-api/9.0/com/
  • Network accessline 359
    - [`Variant.targetSdkVersion`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/Variant#targetSdkVersion()). Is is replaced by [`targetSdk`](https://developer.android.com/reference/tools/gradle-api
  • Network accessline 361
    - [`Variant.unitTest`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/Variant#unitTest()), as it was not applicable to the
  • Network accessline 362
    [`com.android.test`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/gradle/TestPlugin) plugin.
  • Network accessline 363
    `unitTest` is available on [`VariantBuilder`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/VariantBuilder) subtypes extending
  • Network accessline 364
    [`HasUnitTest`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/HasUnitTest).
  • Network accessline 366
    - [`VariantBuilder.targetSdk`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/VariantBuilder#targetSdk()) and [`targetSdkPreview`](https://developer.android.com/reference/tools/gradle-api/8.13/co
  • Network accessline 367
    as they were not meaningful in libraries. Use   [`GeneratesApkBuilder.targetSdk`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/GeneratesApkBuilder#targetSdk()) or   [`GeneratesApkBuilder.targetS
  • Network accessline 368
    [`GeneratesApkBuilder.targetSdk`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/GeneratesApkBuilder#targetSdk()) or
  • Network accessline 369
    [`GeneratesApkBuilder.targetSdkPreview`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/GeneratesApkBuilder#targetSdkPreview())
  • Network accessline 372
    - [`VariantBuilder.enableUnitTest`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/VariantBuilder#enableUnitTest()), as it was not applicable to the
  • Network accessline 373
    [`com.android.test`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/gradle/TestPlugin) plugin.
  • Network accessline 374
    `enableUnitTest` is available on [`VariantBuilder`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/VariantBuilder) subtypes extending
  • Network accessline 375
    [`HasUnitTestBuilder`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/HasUnitTestBuilder).
  • Network accessline 377
    - [`VariantBuilder.unitTestEnabled`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/VariantBuilder#unitTestEnabled()) is removed in favor of the more
  • Network accessline 378
    consistently   named [`enableUnitTest`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/HasUnitTestBuilder#enableUnitTest()) on the [`VariantBuilder`](https://developer.android.com/reference/tools/
  • Network accessline 379
    named [`enableUnitTest`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/HasUnitTestBuilder#enableUnitTest()) on the [`VariantBuilder`](https://developer.android.com/reference/tools/gradle-api/9.0/
  • Network accessline 380
    extending [`HasUnitTestBuilder`](https://developer.android.com/reference/tools/gradle-api/9.0/com/android/build/api/variant/HasUnitTestBuilder).
  • Network accessline 382
    - [`VariantOutput.enable`](https://developer.android.com/reference/tools/gradle-api/8.13/com/android/build/api/variant/VariantOutput#enable()). Is is replaced by [`enabled`](https://developer.android.com/reference/tools/gradle-api/9.0/com/a
  • Network accessline 399
    | Property | Function | Replacement | |---|---|---| | `android.defaults.buildfeatures.aidl` | Enables [AIDL compilation](https://source.android.com/docs/core/architecture/aidl) in all subprojects | Enable AIDL compilation in only the subpro
  • Network accessline 400
    |---|---|---| | `android.defaults.buildfeatures.aidl` | Enables [AIDL compilation](https://source.android.com/docs/core/architecture/aidl) in all subprojects | Enable AIDL compilation in only the subprojects where there are AIDL sources by 
  • Network accessline 401
    | `android.defaults.buildfeatures.aidl` | Enables [AIDL compilation](https://source.android.com/docs/core/architecture/aidl) in all subprojects | Enable AIDL compilation in only the subprojects where there are AIDL sources by setting the fo
  • Network accessline 402
    | `android.defaults.buildfeatures.renderscript` | Enables [RenderScript compilation](https://source.android.com/docs/core/architecture/vndk/renderscript) in all subprojects | Enable renderscript compilation in only the subprojects where the
  • Network accessline 408
    The [Android Gradle plugin Upgrade Assistant](https://developer.android.com/build/agp-upgrade-assistant) won't upgrade projects to
  • Network accessline 501
    possible to extract the ID of the mapping file that is required for retracing, which can be used to support [automated retracing of stack traces in Logcat](https://developer.android.com/studio/preview/features#logcat-retrace).
  • Network accessline 503
    [automated retracing of stack traces in Logcat](https://developer.android.com/studio/preview/features#logcat-retrace).
  • Network accessline 553
    Fixed Issues **Android Gradle Plugin** [Issue #171293712](https://issuetracker.google.com/issues/171293712) Feature Request: Inject ideal AGP version as a property [Issue #443976533](https://issuetracker.google.com/issues/443976533) Stabili

build-system/agp/agp-9-upgrade/references/buildconfig.md

  • Network accessline 40
    Use the **addCustomBuildConfigFields** recipe from the [gradle-recipes](https://developer.android.com/agents/skills/build-system/agp/agp-9-upgrade/references/recipes)

build-system/agp/agp-9-upgrade/references/paparazzi-gradle-9.md

  • Network accessline 20
    tasks.withType<Test>().configureEach {       // https://github.com/cashapp/paparazzi/issues/2111
  • Network accessline 21
    // https://github.com/cashapp/paparazzi/issues/2111
  • Network accessline 27
    tasks.withType(Test).configureEach {       // https://github.com/cashapp/paparazzi/issues/2111
  • Network accessline 28
    // https://github.com/cashapp/paparazzi/issues/2111

build-system/agp/agp-9-upgrade/references/recipes.md

  • Network accessline 11
    In some cases, there is a one-to-one replacement for the old code. Some examples are in [the AGP 9.0.0 release notes](https://developer.android.com/build/releases/agp-9-0-0-release-notes).
  • Network accessline 12
    are in [the AGP 9.0.0 release notes](https://developer.android.com/build/releases/agp-9-0-0-release-notes).
  • Network accessline 14
    In other cases, there is no direct one-to-one replacement. For these situations, the [gradle-recipes repo](https://github.com/android/gradle-recipes) is a great resource. You can checkout one of its
  • Network accessline 15
    the [gradle-recipes repo](https://github.com/android/gradle-recipes) is a great resource. You can checkout one of its
  • Network accessline 41
    See the detailed guide at [BuildConfig](https://developer.android.com/agents/skills/build-system/agp/agp-9-upgrade/references/buildconfig).

camera/camerax/references/expert-blueprints.md

  • Network accessline 57
    For guidance on Night Mode Extensions and Low Light Boost, [low-light.md](https://developer.android.com/agents/skills/camera/camerax/references/low-light).
  • Network accessline 57
    For guidance on Night Mode Extensions and Low Light Boost, [low-light.md](https://developer.android.com/agents/skills/camera/camerax/references/low-light).
  • Network accessline 58
    [low-light.md](https://developer.android.com/agents/skills/camera/camerax/references/low-light).
  • Network accessline 58
    [low-light.md](https://developer.android.com/agents/skills/camera/camerax/references/low-light).

camera/camerax/references/modern-apis.md

  • Network accessline 41
    Refer to the official [CameraX Release Notes](https://developer.android.com/jetpack/androidx/releases/camera) for the
  • Network accessline 41
    Refer to the official [CameraX Release Notes](https://developer.android.com/jetpack/androidx/releases/camera) for the

cars/android-for-cars-parked-apps/references/android/docs/quality-guidelines/car-app-quality/index.md

  • Network accessline 5
    various app categories supported by Android Auto and Android Automotive OS. Many requirements apply only to specific categories, so be sure to filter by your app's category. See the [Car quality tiers](https://developer.android.com/docs/qua
  • Network accessline 5
    various app categories supported by Android Auto and Android Automotive OS. Many requirements apply only to specific categories, so be sure to filter by your app's category. See the [Car quality tiers](https://developer.android.com/docs/qua
  • Network accessline 6
    requirements apply only to specific categories, so be sure to filter by your app's category. See the [Car quality tiers](https://developer.android.com/docs/quality-guidelines/car-app-quality#car-quality-tiers) definitions for details on whi
  • Network accessline 6
    requirements apply only to specific categories, so be sure to filter by your app's category. See the [Car quality tiers](https://developer.android.com/docs/quality-guidelines/car-app-quality#car-quality-tiers) definitions for details on whi
  • Network accessline 7
    app's category. See the [Car quality tiers](https://developer.android.com/docs/quality-guidelines/car-app-quality#car-quality-tiers) definitions
  • Network accessline 7
    app's category. See the [Car quality tiers](https://developer.android.com/docs/quality-guidelines/car-app-quality#car-quality-tiers) definitions
  • Network accessline 11
    > [!NOTE] > **September 2026 update:** The Games app category is now generally available. See [September 2026](https://developer.android.com/docs/quality-guidelines/car-app-quality#sep-26) for details.
  • Network accessline 11
    > [!NOTE] > **September 2026 update:** The Games app category is now generally available. See [September 2026](https://developer.android.com/docs/quality-guidelines/car-app-quality#sep-26) for details.
  • Network accessline 12
    > **September 2026 update:** The Games app category is now generally available. See [September 2026](https://developer.android.com/docs/quality-guidelines/car-app-quality#sep-26) for details.
  • Network accessline 12
    > **September 2026 update:** The Games app category is now generally available. See [September 2026](https://developer.android.com/docs/quality-guidelines/car-app-quality#sep-26) for details.
  • Network accessline 20
    Android Automotive OS :   Use the [Android Emulator](https://developer.android.com/studio/run/emulator) to validate each checklist
  • Network accessline 20
    Android Automotive OS :   Use the [Android Emulator](https://developer.android.com/studio/run/emulator) to validate each checklist
  • Network accessline 21
    :   Use the [Android Emulator](https://developer.android.com/studio/run/emulator) to validate each checklist
  • Network accessline 21
    :   Use the [Android Emulator](https://developer.android.com/studio/run/emulator) to validate each checklist
  • Network accessline 23
    emulator](https://developer.android.com/training/cars/testing/emulator).
  • Network accessline 23
    emulator](https://developer.android.com/training/cars/testing/emulator).
  • Network accessline 25
    Android Auto :   Use the Android Auto Desktop Head Unit (DHU) to validate each checklist item.     For more information, see [Test using the Desktop Head Unit](https://developer.android.com/training/cars/testing/dhu).
  • Network accessline 25
    Android Auto :   Use the Android Auto Desktop Head Unit (DHU) to validate each checklist item.     For more information, see [Test using the Desktop Head Unit](https://developer.android.com/training/cars/testing/dhu).
  • Network accessline 27
    For more information, see [Test using the Desktop Head Unit](https://developer.android.com/training/cars/testing/dhu).
  • Network accessline 27
    For more information, see [Test using the Desktop Head Unit](https://developer.android.com/training/cars/testing/dhu).
  • Network accessline 34
    | [Supported categories](https://developer.android.com/training/cars#supported-app-categories) | Android Auto | Android Automotive OS |
  • Network accessline 34
    | [Supported categories](https://developer.android.com/training/cars#supported-app-categories) | Android Auto | Android Automotive OS |
  • Network accessline 56
    In addition to the guidelines specific to cars, each tier has associated guidelines from [Adaptive app quality guidelines](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality) that
  • Network accessline 56
    In addition to the guidelines specific to cars, each tier has associated guidelines from [Adaptive app quality guidelines](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality) that
  • Network accessline 57
    guidelines from [Adaptive app quality guidelines](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality) that
  • Network accessline 57
    guidelines from [Adaptive app quality guidelines](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality) that
  • Network accessline 68
    This tier primarily applies to the [parked categories](https://developer.android.com/training/cars/parked) of apps,
  • Network accessline 68
    This tier primarily applies to the [parked categories](https://developer.android.com/training/cars/parked) of apps,
  • Network accessline 72
    > [!NOTE] > **Note:** Through the [Car ready mobile apps program](https://developer.android.com/training/cars/car-ready-mobile-apps), mobile apps meeting the requirements in this tier can be made available for download from the Google Play 
  • Network accessline 72
    > [!NOTE] > **Note:** Through the [Car ready mobile apps program](https://developer.android.com/training/cars/car-ready-mobile-apps), mobile apps meeting the requirements in this tier can be made available for download from the Google Play 
  • Network accessline 73
    > **Note:** Through the [Car ready mobile apps program](https://developer.android.com/training/cars/car-ready-mobile-apps), mobile apps meeting the requirements in this tier can be made available for download from the Google Play Store on A
  • Network accessline 73
    > **Note:** Through the [Car ready mobile apps program](https://developer.android.com/training/cars/car-ready-mobile-apps), mobile apps meeting the requirements in this tier can be made available for download from the Google Play Store on A
  • Network accessline 81
    Apps in [categories built for use while driving](https://developer.android.com/training/cars#supported-app-categories) must
  • Network accessline 81
    Apps in [categories built for use while driving](https://developer.android.com/training/cars#supported-app-categories) must
  • Network accessline 95
    | Criteria | ID | Applicable Categories | Description | |---|---|---|---| | Permitted Categories | `PC-1` | All | The app must not include features outside the app types intended for cars. See [Supported app categories](https://developer.an
  • Network accessline 95
    | Criteria | ID | Applicable Categories | Description | |---|---|---|---| | Permitted Categories | `PC-1` | All | The app must not include features outside the app types intended for cars. See [Supported app categories](https://developer.an
  • Network accessline 96
    |---|---|---|---| | Permitted Categories | `PC-1` | All | The app must not include features outside the app types intended for cars. See [Supported app categories](https://developer.android.com/training/cars#supported-app-categories). | | E
  • Network accessline 96
    |---|---|---|---| | Permitted Categories | `PC-1` | All | The app must not include features outside the app types intended for cars. See [Supported app categories](https://developer.android.com/training/cars#supported-app-categories). | | E
  • Network accessline 97
    | Permitted Categories | `PC-1` | All | The app must not include features outside the app types intended for cars. See [Supported app categories](https://developer.android.com/training/cars#supported-app-categories). |
  • Network accessline 97
    | Permitted Categories | `PC-1` | All | The app must not include features outside the app types intended for cars. See [Supported app categories](https://developer.android.com/training/cars#supported-app-categories). |
  • Network accessline 99
    | Expected Performance | `EP-2` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather, Video, Games, Browsers | When the app is relaunched from the home screen, the app must restore the app state as closely as possible to t
  • Network accessline 99
    | Expected Performance | `EP-2` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather, Video, Games, Browsers | When the app is relaunched from the home screen, the app must restore the app state as closely as possible to t
  • Network accessline 100
    | Expected Performance | `EP-3` | Games | The app is responsive to input and does not freeze or stutter during gameplay. | | Expected Performance | `EP-4` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | **Android Au
  • Network accessline 100
    | Expected Performance | `EP-3` | Games | The app is responsive to input and does not freeze or stutter during gameplay. | | Expected Performance | `EP-4` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | **Android Au
  • Network accessline 101
    | Expected Performance | `EP-4` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | **Android Automotive OS only:** The app listing on Google Play Store must include screenshots for the Android Automotive OS form factor
  • Network accessline 101
    | Expected Performance | `EP-4` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | **Android Automotive OS only:** The app listing on Google Play Store must include screenshots for the Android Automotive OS form factor
  • Network accessline 102
    | Display Orientation | `DO-1` | Video, Games, Browsers | **Android Automotive OS only:** The app can be distributed to devices with fixed screen orientations. See [Required Android Automotive OS features](https://developer.android.com/trai
  • Network accessline 102
    | Display Orientation | `DO-1` | Video, Games, Browsers | **Android Automotive OS only:** The app can be distributed to devices with fixed screen orientations. See [Required Android Automotive OS features](https://developer.android.com/trai
  • Network accessline 103
    | Display Orientation | `DO-2` | Games | **Android Auto only:** The app is not significantly pillarboxed when running on landscape displays. See [Support common Android Auto screen sizes](https://developer.android.com/training/cars/parked/a
  • Network accessline 103
    | Display Orientation | `DO-2` | Games | **Android Auto only:** The app is not significantly pillarboxed when running on landscape displays. See [Support common Android Auto screen sizes](https://developer.android.com/training/cars/parked/a
  • Network accessline 104
    | App Rendering | `AR-1` | All categories supported by Android Automotive OS | In activities implemented by the app, interactive UI elements must not be obstructed by system bars or display cutouts. See [Work with window insets and display 
  • Network accessline 104
    | App Rendering | `AR-1` | All categories supported by Android Automotive OS | In activities implemented by the app, interactive UI elements must not be obstructed by system bars or display cutouts. See [Work with window insets and display 
  • Network accessline 105
    | Driver Distraction | `DD-3` | Video, Games, Browsers | The app must not be launchable or usable while driving and must not play any audio. See [Meet driver distraction requirements](https://developer.android.com/training/cars/parked/autom
  • Network accessline 105
    | Driver Distraction | `DD-3` | Video, Games, Browsers | The app must not be launchable or usable while driving and must not play any audio. See [Meet driver distraction requirements](https://developer.android.com/training/cars/parked/autom
  • Network accessline 106
    | Irrelevant notifications | `IN-2` | Video, Games, Browsers | The app must not post any [heads up notifications](https://developer.android.com/training/cars/platforms/automotive-os/notifications#hun). |
  • Network accessline 106
    | Irrelevant notifications | `IN-2` | Video, Games, Browsers | The app must not post any [heads up notifications](https://developer.android.com/training/cars/platforms/automotive-os/notifications#hun). |
  • Network accessline 107
    | App Navigability | `AN-1` | Video, Games, Browsers | Users can navigate through the app without encountering any dead ends. | | Sensitive Data | `SD-1` | Browsers | Browsers must not save or allow access to passwords or payment informatio
  • Network accessline 107
    | App Navigability | `AN-1` | Video, Games, Browsers | Users can navigate through the app without encountering any dead ends. | | Sensitive Data | `SD-1` | Browsers | Browsers must not save or allow access to passwords or payment informatio
  • Network accessline 108
    | Sensitive Data | `SD-1` | Browsers | Browsers must not save or allow access to passwords or payment information unless the [user can block access to passwords](https://developer.android.com/training/cars/parked/browser#block-sensitive) us
  • Network accessline 108
    | Sensitive Data | `SD-1` | Browsers | Browsers must not save or allow access to passwords or payment information unless the [user can block access to passwords](https://developer.android.com/training/cars/parked/browser#block-sensitive) us
  • Network accessline 109
    | Sensitive Data | `SD-2` | Browsers | Before syncing data to the car, browsers that synchronize passwords or payments data must do the following steps: 1. Prompt the user to authenticate. 2. Notify the user on the car screen their data wil
  • Network accessline 109
    | Sensitive Data | `SD-2` | Browsers | Before syncing data to the car, browsers that synchronize passwords or payments data must do the following steps: 1. Prompt the user to authenticate. 2. Notify the user on the car screen their data wil
  • Network accessline 113
    While these guidelines are relevant for all activities implemented by your app, they are Tier 3 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 113
    While these guidelines are relevant for all activities implemented by your app, they are Tier 3 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 114
    they are Tier 3 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 114
    they are Tier 3 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 116
    | Criteria | ID | Guidance for cars | |---|---|---| | Configuration and continuity | [`LS-C1`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-C1) | Configuration changes in cars are primarily caused by mov
  • Network accessline 116
    | Criteria | ID | Guidance for cars | |---|---|---| | Configuration and continuity | [`LS-C1`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-C1) | Configuration changes in cars are primarily caused by mov
  • Network accessline 117
    |---|---|---| | Configuration and continuity | [`LS-C1`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-C1) | Configuration changes in cars are primarily caused by moving an app between displays, such as w
  • Network accessline 117
    |---|---|---| | Configuration and continuity | [`LS-C1`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-C1) | Configuration changes in cars are primarily caused by moving an app between displays, such as w
  • Network accessline 118
    | Configuration and continuity | [`LS-C1`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-C1) | Configuration changes in cars are primarily caused by moving an app between displays, such as when moving an 
  • Network accessline 118
    | Configuration and continuity | [`LS-C1`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-C1) | Configuration changes in cars are primarily caused by moving an app between displays, such as when moving an 
  • Network accessline 119
    | Configuration and continuity | [`LS-C2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-C2) | No additional guidance. |
  • Network accessline 119
    | Configuration and continuity | [`LS-C2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-C2) | No additional guidance. |
  • Network accessline 127
    | Visual or Text Ads | `AD-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must not display text-based advertising other than the advertiser's name or the product name. | | Image Usage | `IU-1` | Media, Messaging, Ca
  • Network accessline 127
    | Visual or Text Ads | `AD-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must not display text-based advertising other than the advertiser's name or the product name. | | Image Usage | `IU-1` | Media, Messaging, Ca
  • Network accessline 128
    | Image Usage | `IU-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | App elements don't display any images on the screen. Exceptions include: - Apps can display a single static image for content context in the background of t
  • Network accessline 128
    | Image Usage | `IU-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | App elements don't display any images on the screen. Exceptions include: - Apps can display a single static image for content context in the background of t
  • Network accessline 129
    | Visual Information on Phone | `VI-1` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | **Android Auto only:** If the user must go to the phone screen---for example, to act on a permission request---then the app must
  • Network accessline 129
    | Visual Information on Phone | `VI-1` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | **Android Auto only:** If the user must go to the phone screen---for example, to act on a permission request---then the app must
  • Network accessline 130
    | App Doesn't Crash | `AC-1` | Messaging (templated), Calling, Navigation, POI, IOT, Weather | Users must be able to complete tasks in the app using five screens or fewer. For more information, see [Template restrictions](https://developer.
  • Network accessline 130
    | App Doesn't Crash | `AC-1` | Messaging (templated), Calling, Navigation, POI, IOT, Weather | Users must be able to complete tasks in the app using five screens or fewer. For more information, see [Template restrictions](https://developer.
  • Network accessline 131
    | Scrolling Text | `ST-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must not display automatically scrolling text. | | Voice Commands | `VC-1` | Media, Navigation | The app must support Gemini and Google Assistant
  • Network accessline 131
    | Scrolling Text | `ST-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must not display automatically scrolling text. | | Voice Commands | `VC-1` | Media, Navigation | The app must support Gemini and Google Assistant
  • Network accessline 132
    | Voice Commands | `VC-1` | Media, Navigation | The app must support Gemini and Google Assistant voice commands. For more information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions) for media, a
  • Network accessline 132
    | Voice Commands | `VC-1` | Media, Navigation | The app must support Gemini and Google Assistant voice commands. For more information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions) for media, a
  • Network accessline 134
    | Delayed Response | `DR-2` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | The app must launch in no more than 10 seconds. | | Delayed Response | `DR-3` | Media, Messaging (templated), Calling, Navigation, POI, IOT
  • Network accessline 134
    | Delayed Response | `DR-2` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | The app must launch in no more than 10 seconds. | | Delayed Response | `DR-3` | Media, Messaging (templated), Calling, Navigation, POI, IOT
  • Network accessline 135
    | Delayed Response | `DR-3` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | The app must load content in no more than 10 seconds. | | Contrast | `VD-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | Th
  • Network accessline 135
    | Delayed Response | `DR-3` | Media, Messaging (templated), Calling, Navigation, POI, IOT, Weather | The app must load content in no more than 10 seconds. | | Contrast | `VD-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | Th
  • Network accessline 136
    | Contrast | `VD-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must provide icons and colors that meet Android Auto's contrast requirements. For more information, see [Contrast](https://developers.google.com/cars/d
  • Network accessline 136
    | Contrast | `VD-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must provide icons and colors that meet Android Auto's contrast requirements. For more information, see [Contrast](https://developers.google.com/cars/d
  • Network accessline 137
    | Contrast | `VD-2` | Media | The app must provide white icon sets that the system colorizes to provide automatic contrast compensation. | | Contrast | `VD-3` | Media | The app must provide colors that the system can optimize for in-vehicle
  • Network accessline 137
    | Contrast | `VD-2` | Media | The app must provide white icon sets that the system colorizes to provide automatic contrast compensation. | | Contrast | `VD-3` | Media | The app must provide colors that the system can optimize for in-vehicle
  • Network accessline 138
    | Contrast | `VD-3` | Media | The app must provide colors that the system can optimize for in-vehicle readability. | | Theming | `TH-1` | Messaging (templated), Navigation, POI, IOT, Weather | Apps that add custom theming to Car App Library
  • Network accessline 138
    | Contrast | `VD-3` | Media | The app must provide colors that the system can optimize for in-vehicle readability. | | Theming | `TH-1` | Messaging (templated), Navigation, POI, IOT, Weather | Apps that add custom theming to Car App Library
  • Network accessline 139
    | Theming | `TH-1` | Messaging (templated), Navigation, POI, IOT, Weather | Apps that add custom theming to Car App Library components with version 1.9 or higher must support light and dark theme. See [Contrast](https://developer.android.co
  • Network accessline 139
    | Theming | `TH-1` | Messaging (templated), Navigation, POI, IOT, Weather | Apps that add custom theming to Car App Library components with version 1.9 or higher must support light and dark theme. See [Contrast](https://developer.android.co
  • Network accessline 140
    | Grey Buttons | `GB-1` | Media | Interactive elements that are intentionally disabled must be nonfunctional. | | Driver Distraction | `DD-1` | Navigation | The navigation audio channel can only be used by navigation apps and for navigation
  • Network accessline 140
    | Grey Buttons | `GB-1` | Media | Interactive elements that are intentionally disabled must be nonfunctional. | | Driver Distraction | `DD-1` | Navigation | The navigation audio channel can only be used by navigation apps and for navigation
  • Network accessline 141
    | Driver Distraction | `DD-1` | Navigation | The navigation audio channel can only be used by navigation apps and for navigation instructions. For more information, see [Voice guidance](https://developer.android.com/training/cars/apps/navig
  • Network accessline 141
    | Driver Distraction | `DD-1` | Navigation | The navigation audio channel can only be used by navigation apps and for navigation instructions. For more information, see [Voice guidance](https://developer.android.com/training/cars/apps/navig
  • Network accessline 142
    | Driver Distraction | `DD-2` | Video, Games, Browsers | While driving, the app must not be launchable and the app's UI must not be visible. The app's audio must stop when the user starts driving and cannot be unpaused while driving. For mo
  • Network accessline 142
    | Driver Distraction | `DD-2` | Video, Games, Browsers | While driving, the app must not be launchable and the app's UI must not be visible. The app's audio must stop when the user starts driving and cannot be unpaused while driving. For mo
  • Network accessline 143
    | Payments | `PA-1` | Navigation, POI, IOT, Weather | The app must have simple flows if purchases are enabled, using shortcuts such as recent or favorite purchases. For more information, see [Purchase using an existing payment method](https
  • Network accessline 143
    | Payments | `PA-1` | Navigation, POI, IOT, Weather | The app must have simple flows if purchases are enabled, using shortcuts such as recent or favorite purchases. For more information, see [Purchase using an existing payment method](https
  • Network accessline 144
    | Notification Ads | `NA-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must not present advertisements through notifications. | | Irrelevant Notifications | `IN-1` | Media, Messaging, Calling, Navigation, POI, IOT,
  • Network accessline 144
    | Notification Ads | `NA-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must not present advertisements through notifications. | | Irrelevant Notifications | `IN-1` | Media, Messaging, Calling, Navigation, POI, IOT,
  • Network accessline 145
    | Irrelevant Notifications | `IN-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must display notifications only when relevant to the driver's needs. Examples: Good: Notifying the user that a new message has arrived.
  • Network accessline 145
    | Irrelevant Notifications | `IN-1` | Media, Messaging, Calling, Navigation, POI, IOT, Weather | The app must display notifications only when relevant to the driver's needs. Examples: Good: Notifying the user that a new message has arrived.
  • Network accessline 146
    | Media Autoplay | `MA-1` | Media | The app must not autoplay on startup or without user initiated action to select the app or app media. For more information, see [Implement play commands](https://developer.android.com/training/cars/media#
  • Network accessline 146
    | Media Autoplay | `MA-1` | Media | The app must not autoplay on startup or without user initiated action to select the app or app media. For more information, see [Implement play commands](https://developer.android.com/training/cars/media#
  • Network accessline 147
    | Messaging Functionality | `MF-1` | Messaging | The app must receive incoming messages. For more information, see [Extend messaging notifications to Android Auto](https://developer.android.com/training/cars/communication/notification-messa
  • Network accessline 147
    | Messaging Functionality | `MF-1` | Messaging | The app must receive incoming messages. For more information, see [Extend messaging notifications to Android Auto](https://developer.android.com/training/cars/communication/notification-messa
  • Network accessline 148
    | Messaging Functionality | `MF-2` | Messaging | Messages must be properly grouped and displayed in the correct order. For more information, see [Extend messaging notifications to Android Auto](https://developer.android.com/training/cars/co
  • Network accessline 148
    | Messaging Functionality | `MF-2` | Messaging | Messages must be properly grouped and displayed in the correct order. For more information, see [Extend messaging notifications to Android Auto](https://developer.android.com/training/cars/co
  • Network accessline 149
    | Messaging Functionality | `MF-3` | Messaging | The user can reply to a message. For more information, see [Extend messaging notifications to Android Auto](https://developer.android.com/training/cars/communication/notification-messaging). 
  • Network accessline 149
    | Messaging Functionality | `MF-3` | Messaging | The user can reply to a message. For more information, see [Extend messaging notifications to Android Auto](https://developer.android.com/training/cars/communication/notification-messaging). 
  • Network accessline 152
    | Navigation Functionality | `NF-1` | Navigation | The app must provide turn-by-turn navigation directions. | | Navigation Functionality | `NF-2` | Navigation | The app draws only map content on the surface of the navigation templates. Text
  • Network accessline 152
    | Navigation Functionality | `NF-1` | Navigation | The app must provide turn-by-turn navigation directions. | | Navigation Functionality | `NF-2` | Navigation | The app draws only map content on the surface of the navigation templates. Text
  • Network accessline 153
    | Navigation Functionality | `NF-2` | Navigation | The app draws only map content on the surface of the navigation templates. Text-based turn-by-turn directions, lane guidance, and estimated arrival time must be displayed on the relevant co
  • Network accessline 153
    | Navigation Functionality | `NF-2` | Navigation | The app draws only map content on the surface of the navigation templates. Text-based turn-by-turn directions, lane guidance, and estimated arrival time must be displayed on the relevant co
  • Network accessline 154
    | Navigation Functionality | `NF-3` | Navigation | When the app provides text-based turn-by-turn directions, it must also trigger navigation notifications. For more information, see [Turn-by-turn notifications](https://developer.android.com
  • Network accessline 154
    | Navigation Functionality | `NF-3` | Navigation | When the app provides text-based turn-by-turn directions, it must also trigger navigation notifications. For more information, see [Turn-by-turn notifications](https://developer.android.com
  • Network accessline 155
    | Navigation Functionality | `NF-4` | Navigation | When the navigation app provides text-based turn-by-turn directions, it must send next-turn information to the vehicle's cluster display. For more information, see [Navigation metadata](htt
  • Network accessline 155
    | Navigation Functionality | `NF-4` | Navigation | When the navigation app provides text-based turn-by-turn directions, it must send next-turn information to the vehicle's cluster display. For more information, see [Navigation metadata](htt
  • Network accessline 156
    | Navigation Functionality | `NF-5` | Navigation | The app must not provide turn-by-turn notifications, voice guidance, or cluster information when another navigation app is providing turn-by-turn instructions. For more information, see [St
  • Network accessline 156
    | Navigation Functionality | `NF-5` | Navigation | The app must not provide turn-by-turn notifications, voice guidance, or cluster information when another navigation app is providing turn-by-turn instructions. For more information, see [St
  • Network accessline 157
    | Navigation Functionality | `NF-6` | Navigation | The app must handle navigation requests from other apps. For more information, see [Support navigation intents](https://developer.android.com/training/cars/apps/navigation#support-navigatio
  • Network accessline 157
    | Navigation Functionality | `NF-6` | Navigation | The app must handle navigation requests from other apps. For more information, see [Support navigation intents](https://developer.android.com/training/cars/apps/navigation#support-navigatio
  • Network accessline 158
    | Navigation Functionality | `NF-7` | Navigation | The app must provide a "test drive" mode that simulates driving. For more information, see [Simulate navigation](https://developer.android.com/training/cars/apps/navigation#simulating-navig
  • Network accessline 158
    | Navigation Functionality | `NF-7` | Navigation | The app must provide a "test drive" mode that simulates driving. For more information, see [Simulate navigation](https://developer.android.com/training/cars/apps/navigation#simulating-navig
  • Network accessline 164
    | Weather Functionality | `WE-4` | Weather | Customization of forecast intervals must not be made possible using templates. | | Weather Functionality | `WE-5` | Weather | Weather apps must not show more than five unique weather map annotati
  • Network accessline 164
    | Weather Functionality | `WE-4` | Weather | Customization of forecast intervals must not be made possible using templates. | | Weather Functionality | `WE-5` | Weather | Weather apps must not show more than five unique weather map annotati
  • Network accessline 165
    | Weather Functionality | `WE-5` | Weather | Weather apps must not show more than five unique weather map annotations in a given view (for example: Temperature markers, wind speed markers, humidity, radar overlay, lightning indicators, road
  • Network accessline 165
    | Weather Functionality | `WE-5` | Weather | Weather apps must not show more than five unique weather map annotations in a given view (for example: Temperature markers, wind speed markers, humidity, radar overlay, lightning indicators, road
  • Network accessline 166
    | Map Rendering | `MR-1` | Navigation, POI, Weather | By default, apps that [draw maps](https://developer.android.com/training/cars/apps#draw-maps) must draw a light-themed or dark-themed map when instructed to do so. For more information, 
  • Network accessline 166
    | Map Rendering | `MR-1` | Navigation, POI, Weather | By default, apps that [draw maps](https://developer.android.com/training/cars/apps#draw-maps) must draw a light-themed or dark-themed map when instructed to do so. For more information, 
  • Network accessline 167
    | Media Controls | `MC-1` | Video | The app integrates with media session. Depending on the content, the app must support either the play/pause or stop playback commands. Additionally, the app must provide title and thumbnail metadata for e
  • Network accessline 167
    | Media Controls | `MC-1` | Video | The app integrates with media session. Depending on the content, the app must support either the play/pause or stop playback commands. Additionally, the app must provide title and thumbnail metadata for e
  • Network accessline 168
    | Deep Links | `DL-1` | Video, Games, Browsers | **Android Automotive OS only:** The app supports deep links. See [Handling Android App Links](https://developer.android.com/training/app-links). |
  • Network accessline 168
    | Deep Links | `DL-1` | Video, Games, Browsers | **Android Automotive OS only:** The app supports deep links. See [Handling Android App Links](https://developer.android.com/training/app-links). |
  • Network accessline 169
    | Media Functionality (templated) | `MFT-1` | Media (templated) | User must be able to navigate to the `MediaPlaybackTemplate` from media browsing views or support the minimized control panel for apps using the Car App Library Version 1.9 o
  • Network accessline 169
    | Media Functionality (templated) | `MFT-1` | Media (templated) | User must be able to navigate to the `MediaPlaybackTemplate` from media browsing views or support the minimized control panel for apps using the Car App Library Version 1.9 o
  • Network accessline 170
    | Media Functionality (templated) | `MFT-3` | Media (templated) | Handle `SHOW_MEDIA_PLAYBACK` intents: Templated Media apps must handle the `androidx.car.app.media.action.SHOW_MEDIA_PLAYBACK` intent action to direct the user to the `MediaP
  • Network accessline 170
    | Media Functionality (templated) | `MFT-3` | Media (templated) | Handle `SHOW_MEDIA_PLAYBACK` intents: Templated Media apps must handle the `androidx.car.app.media.action.SHOW_MEDIA_PLAYBACK` intent action to direct the user to the `MediaP
  • Network accessline 174
    While these guidelines are relevant for all activities implemented by your app, they are Tier 2 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 174
    While these guidelines are relevant for all activities implemented by your app, they are Tier 2 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 175
    they are Tier 2 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 175
    they are Tier 2 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 177
    | Criteria | ID | Guidance for cars | |---|---|---| | Multi-window and multi-resume | [`LS-M2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-M2) | When an activity is on a [distant display](https://devel
  • Network accessline 177
    | Criteria | ID | Guidance for cars | |---|---|---| | Multi-window and multi-resume | [`LS-M2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-M2) | When an activity is on a [distant display](https://devel
  • Network accessline 178
    |---|---|---| | Multi-window and multi-resume | [`LS-M2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-M2) | When an activity is on a [distant display](https://developer.android.com/training/cars/testing
  • Network accessline 178
    |---|---|---| | Multi-window and multi-resume | [`LS-M2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-M2) | When an activity is on a [distant display](https://developer.android.com/training/cars/testing
  • Network accessline 179
    | Multi-window and multi-resume | [`LS-M2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-M2) | When an activity is on a [distant display](https://developer.android.com/training/cars/testing/emulator/dist
  • Network accessline 179
    | Multi-window and multi-resume | [`LS-M2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-M2) | When an activity is on a [distant display](https://developer.android.com/training/cars/testing/emulator/dist
  • Network accessline 180
    | UX | [`LS-U1`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U1) | Some cars have landscape screens with much greater aspect ratios than are common on other large screen devices. You can use the [Automo
  • Network accessline 180
    | UX | [`LS-U1`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U1) | Some cars have landscape screens with much greater aspect ratios than are common on other large screen devices. You can use the [Automo
  • Network accessline 181
    | UX | [`LS-U2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U2) | Same as for LS-U1 |
  • Network accessline 181
    | UX | [`LS-U2`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U2) | Same as for LS-U1 |
  • Network accessline 182
    | UX | [`LS-U3`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U3) | To qualify as a car optimized app, your app must meet the LS-U3 requirement for touch target sizes. To qualify as car differentiated, i
  • Network accessline 182
    | UX | [`LS-U3`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U3) | To qualify as a car optimized app, your app must meet the LS-U3 requirement for touch target sizes. To qualify as car differentiated, i
  • Network accessline 186
    | Criteria | ID | Applicable Categories | Description | |---|---|---|---| | Navigation Functionality | `NF-9` | Navigation | The app supports rendering on cluster displays, and only renders map tiles on these displays. See [Drawing to the c
  • Network accessline 186
    | Criteria | ID | Applicable Categories | Description | |---|---|---|---| | Navigation Functionality | `NF-9` | Navigation | The app supports rendering on cluster displays, and only renders map tiles on these displays. See [Drawing to the c
  • Network accessline 187
    |---|---|---|---| | Navigation Functionality | `NF-9` | Navigation | The app supports rendering on cluster displays, and only renders map tiles on these displays. See [Drawing to the cluster display](https://developer.android.com/training/c
  • Network accessline 187
    |---|---|---|---| | Navigation Functionality | `NF-9` | Navigation | The app supports rendering on cluster displays, and only renders map tiles on these displays. See [Drawing to the cluster display](https://developer.android.com/training/c
  • Network accessline 188
    | Navigation Functionality | `NF-9` | Navigation | The app supports rendering on cluster displays, and only renders map tiles on these displays. See [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigatio
  • Network accessline 188
    | Navigation Functionality | `NF-9` | Navigation | The app supports rendering on cluster displays, and only renders map tiles on these displays. See [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigatio
  • Network accessline 189
    | Templated Messaging Functionality | `TMF-1` | Messaging (templated) | The app displays conversations as described in [Display conversations](https://developer.android.com/training/cars/communication/templated-messaging#display-conversatio
  • Network accessline 189
    | Templated Messaging Functionality | `TMF-1` | Messaging (templated) | The app displays conversations as described in [Display conversations](https://developer.android.com/training/cars/communication/templated-messaging#display-conversatio
  • Network accessline 190
    | Calling Functionality | `CF-1` | Calling | The app can be used to initiate, accept, decline, and leave calls. See [Build calling experiences for Android Auto](https://developer.android.com/training/cars/communication/calling#integrate-tel
  • Network accessline 190
    | Calling Functionality | `CF-1` | Calling | The app can be used to initiate, accept, decline, and leave calls. See [Build calling experiences for Android Auto](https://developer.android.com/training/cars/communication/calling#integrate-tel
  • Network accessline 191
    | Calling Functionality | `CF-2` | Calling | During a call, the app provides the following: - A call name and icon. - For meetings/group calls, the number of participants and the actively speaking participant. - The ability for a user to mu
  • Network accessline 191
    | Calling Functionality | `CF-2` | Calling | During a call, the app provides the following: - A call name and icon. - For meetings/group calls, the number of participants and the actively speaking participant. - The ability for a user to mu
  • Network accessline 192
    | Calling Functionality | `CF-3` | Calling | Calls initiated while Android Auto is not connected continue when a user connects to Android Auto and are displayed on Android Auto. | | Deep Links | `DL-2` | Media, Navigation, POI, IOT, Weather
  • Network accessline 192
    | Calling Functionality | `CF-3` | Calling | Calls initiated while Android Auto is not connected continue when a user connects to Android Auto and are displayed on Android Auto. | | Deep Links | `DL-2` | Media, Navigation, POI, IOT, Weather
  • Network accessline 193
    | Deep Links | `DL-2` | Media, Navigation, POI, IOT, Weather | **Android Automotive OS only:** The app supports deep links: - For media apps, see [Add support for Android Automotive OS to your media app](https://developer.android.com/traini
  • Network accessline 193
    | Deep Links | `DL-2` | Media, Navigation, POI, IOT, Weather | **Android Automotive OS only:** The app supports deep links: - For media apps, see [Add support for Android Automotive OS to your media app](https://developer.android.com/traini
  • Network accessline 194
    | Driver distraction | `DD-4` | Video | The app supports audio while driving on capable devices. See [Support audio while driving](https://developer.android.com/training/cars/parked/video#audio-while-driving) for additional details. **Impor
  • Network accessline 194
    | Driver distraction | `DD-4` | Video | The app supports audio while driving on capable devices. See [Support audio while driving](https://developer.android.com/training/cars/parked/video#audio-while-driving) for additional details. **Impor
  • Network accessline 195
    | App Rendering | `AR-2` | Video, Games, Browsers | The app renders into display cutouts to fully make use of the screen space available while maintaining the ability for users to continue interacting with all UI elements on the screen. See
  • Network accessline 195
    | App Rendering | `AR-2` | Video, Games, Browsers | The app renders into display cutouts to fully make use of the screen space available while maintaining the ability for users to continue interacting with all UI elements on the screen. See
  • Network accessline 196
    | Media Functionality (templated) | `MFT-2` | Media (templated) | App provides a differentiated experience by using templates for scenarios beyond basic browsing and playback. For example, by providing expanded playback controls or by allow
  • Network accessline 196
    | Media Functionality (templated) | `MFT-2` | Media (templated) | App provides a differentiated experience by using templates for scenarios beyond basic browsing and playback. For example, by providing expanded playback controls or by allow
  • Network accessline 203
    While these guidelines are relevant for all activities implemented by your app, they are Tier 1 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 203
    While these guidelines are relevant for all activities implemented by your app, they are Tier 1 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 204
    they are Tier 1 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 204
    they are Tier 1 requirements only for [parked apps](https://developer.android.com/training/cars/parked).
  • Network accessline 206
    | Criteria | ID | Guidance for cars | |---|---|---| | UX | [`LS-U4`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U4) | Although keyboards are supported by Android Automotive OS, they're less common inpu
  • Network accessline 206
    | Criteria | ID | Guidance for cars | |---|---|---| | UX | [`LS-U4`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U4) | Although keyboards are supported by Android Automotive OS, they're less common inpu
  • Network accessline 207
    |---|---|---| | UX | [`LS-U4`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U4) | Although keyboards are supported by Android Automotive OS, they're less common input methods in cars in comparison to oth
  • Network accessline 207
    |---|---|---| | UX | [`LS-U4`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U4) | Although keyboards are supported by Android Automotive OS, they're less common input methods in cars in comparison to oth
  • Network accessline 208
    | UX | [`LS-U4`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U4) | Although keyboards are supported by Android Automotive OS, they're less common input methods in cars in comparison to other large scree
  • Network accessline 208
    | UX | [`LS-U4`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-U4) | Although keyboards are supported by Android Automotive OS, they're less common input methods in cars in comparison to other large scree
  • Network accessline 209
    | Keyboard, mouse, and trackpad | [`LS-I3`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-I3) | Same as for LS-U4 |
  • Network accessline 209
    | Keyboard, mouse, and trackpad | [`LS-I3`](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality#LS-I3) | Same as for LS-U4 |
  • Network accessline 222
    If your app does not meet the app quality requirements described on this page, the Play Store team contacts you through the email address specified in the [Google Play Console](https://play.google.com/console/) account associated with the a
  • Network accessline 222
    If your app does not meet the app quality requirements described on this page, the Play Store team contacts you through the email address specified in the [Google Play Console](https://play.google.com/console/) account associated with the a
  • Network accessline 224
    [Google Play Console](https://play.google.com/console/) account associated with the app.
  • Network accessline 224
    [Google Play Console](https://play.google.com/console/) account associated with the app.
  • Network accessline 226
    > [!NOTE] > **Note:** For information about how to publish your app in Google Play, see [Distribute to cars](https://developer.android.com/training/cars/distribute).
  • Network accessline 226
    > [!NOTE] > **Note:** For information about how to publish your app in Google Play, see [Distribute to cars](https://developer.android.com/training/cars/distribute).
  • Network accessline 227
    > **Note:** For information about how to publish your app in Google Play, see [Distribute to cars](https://developer.android.com/training/cars/distribute).
  • Network accessline 227
    > **Note:** For information about how to publish your app in Google Play, see [Distribute to cars](https://developer.android.com/training/cars/distribute).
  • Network accessline 231
    You can learn more about [managing policy violations and appeals](https://support.google.com/googleplay/android-developer/answer/9899142)
  • Network accessline 231
    You can learn more about [managing policy violations and appeals](https://support.google.com/googleplay/android-developer/answer/9899142)
  • Network accessline 232
    [managing policy violations and appeals](https://support.google.com/googleplay/android-developer/answer/9899142)
  • Network accessline 232
    [managing policy violations and appeals](https://support.google.com/googleplay/android-developer/answer/9899142)
  • Network accessline 251
    - The Games parked app category has graduated from beta to general availability. Developers can now publish games to all track types on Google Play. See [Supported app categories](https://developer.android.com/training/cars#supported-app-ca
  • Network accessline 251
    - The Games parked app category has graduated from beta to general availability. Developers can now publish games to all track types on Google Play. See [Supported app categories](https://developer.android.com/training/cars#supported-app-ca
  • Network accessline 257
    - Categories affected: Media, Messaging (templated), Calling, Navigation, POI, IOT, or Weather   - New criterion:     [`EP-4`](https://developer.android.com/docs/quality-guidelines/car-app-quality#EP-4)
  • Network accessline 257
    - Categories affected: Media, Messaging (templated), Calling, Navigation, POI, IOT, or Weather   - New criterion:     [`EP-4`](https://developer.android.com/docs/quality-guidelines/car-app-quality#EP-4)
  • Network accessline 259
    [`EP-4`](https://developer.android.com/docs/quality-guidelines/car-app-quality#EP-4)
  • Network accessline 259
    [`EP-4`](https://developer.android.com/docs/quality-guidelines/car-app-quality#EP-4)
  • Network accessline 264
    Automotive OS form factor. See     [Provide Android     Automotive OS screenshots](https://developer.android.com/training/cars/distribute#opt-in-aaos).
  • Network accessline 264
    Automotive OS form factor. See     [Provide Android     Automotive OS screenshots](https://developer.android.com/training/cars/distribute#opt-in-aaos).
  • Network accessline 266
    Automotive OS screenshots](https://developer.android.com/training/cars/distribute#opt-in-aaos).
  • Network accessline 266
    Automotive OS screenshots](https://developer.android.com/training/cars/distribute#opt-in-aaos).
  • Network accessline 273
    Play Store listing. See     [Provide Android     Automotive OS screenshots](https://developer.android.com/training/cars/distribute#opt-in-aaos).
  • Network accessline 273
    Play Store listing. See     [Provide Android     Automotive OS screenshots](https://developer.android.com/training/cars/distribute#opt-in-aaos).
  • Network accessline 275
    Automotive OS screenshots](https://developer.android.com/training/cars/distribute#opt-in-aaos).
  • Network accessline 275
    Automotive OS screenshots](https://developer.android.com/training/cars/distribute#opt-in-aaos).
  • Network accessline 281
    - Categories affected: Media, Media (templated), Navigation   - Updated criterion: [`VC-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#VC-1)
  • Network accessline 281
    - Categories affected: Media, Media (templated), Navigation   - Updated criterion: [`VC-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#VC-1)
  • Network accessline 282
    - Updated criterion: [`VC-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#VC-1)
  • Network accessline 282
    - Updated criterion: [`VC-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#VC-1)
  • Network accessline 285
    The app must support Google Assistant voice commands. For more     information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions) for
  • Network accessline 285
    The app must support Google Assistant voice commands. For more     information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions) for
  • Network accessline 286
    information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions) for
  • Network accessline 286
    information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions) for
  • Network accessline 287
    media, and [Support navigation intents](https://developer.android.com/training/cars/apps/navigation#support-navigation-intents) for
  • Network accessline 287
    media, and [Support navigation intents](https://developer.android.com/training/cars/apps/navigation#support-navigation-intents) for
  • Network accessline 291
    The app must support Gemini and Google Assistant voice commands. For     more information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions)
  • Network accessline 291
    The app must support Gemini and Google Assistant voice commands. For     more information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions)
  • Network accessline 292
    more information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions)
  • Network accessline 292
    more information, see [Support voice actions](https://developer.android.com/training/cars/media/voice-actions)
  • Network accessline 293
    for media, and [Support navigation intents](https://developer.android.com/training/cars/apps/navigation#support-navigation-intents) for
  • Network accessline 293
    for media, and [Support navigation intents](https://developer.android.com/training/cars/apps/navigation#support-navigation-intents) for
  • Network accessline 297
    - Categories affected: Media (templated), Messaging (templated), Navigation, POI, IOT, Weather   - New criterion:     [`TH-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#TH-1)
  • Network accessline 297
    - Categories affected: Media (templated), Messaging (templated), Navigation, POI, IOT, Weather   - New criterion:     [`TH-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#TH-1)
  • Network accessline 299
    [`TH-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#TH-1)
  • Network accessline 299
    [`TH-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#TH-1)
  • Network accessline 301
    Apps that add custom theming to Car App Library components with version     1.9 or higher must support light and dark theme. See     [Contrast](https://developer.android.com/develop/ui/compose/styles/theming) for more information.
  • Network accessline 301
    Apps that add custom theming to Car App Library components with version     1.9 or higher must support light and dark theme. See     [Contrast](https://developer.android.com/develop/ui/compose/styles/theming) for more information.
  • Network accessline 302
    1.9 or higher must support light and dark theme. See     [Contrast](https://developer.android.com/develop/ui/compose/styles/theming) for more information. - Media Functionality (templated)
  • Network accessline 302
    1.9 or higher must support light and dark theme. See     [Contrast](https://developer.android.com/develop/ui/compose/styles/theming) for more information. - Media Functionality (templated)
  • Network accessline 303
    [Contrast](https://developer.android.com/develop/ui/compose/styles/theming) for more information.
  • Network accessline 303
    [Contrast](https://developer.android.com/develop/ui/compose/styles/theming) for more information.
  • Network accessline 306
    - Categories affected: Media (templated)   - Updated criterion: [`MFT-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MFT-1)
  • Network accessline 306
    - Categories affected: Media (templated)   - Updated criterion: [`MFT-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MFT-1)
  • Network accessline 307
    - Updated criterion: [`MFT-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MFT-1)
  • Network accessline 307
    - Updated criterion: [`MFT-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MFT-1)
  • Network accessline 310
    User must be able to navigate to the `MediaPlaybackTemplate` from media     browsing views. See [Build templated media     apps](https://developer.android.com/training/cars/apps/media) for more details.
  • Network accessline 310
    User must be able to navigate to the `MediaPlaybackTemplate` from media     browsing views. See [Build templated media     apps](https://developer.android.com/training/cars/apps/media) for more details.
  • Network accessline 311
    browsing views. See [Build templated media     apps](https://developer.android.com/training/cars/apps/media) for more details.   - New text:
  • Network accessline 311
    browsing views. See [Build templated media     apps](https://developer.android.com/training/cars/apps/media) for more details.   - New text:
  • Network accessline 312
    apps](https://developer.android.com/training/cars/apps/media) for more details.
  • Network accessline 312
    apps](https://developer.android.com/training/cars/apps/media) for more details.
  • Network accessline 316
    browsing views or support the minimized control panel for apps using the     Car App Library Version 1.9 or higher. See [Build templated media     apps](https://developer.android.com/training/cars/apps/media) for more details.
  • Network accessline 316
    browsing views or support the minimized control panel for apps using the     Car App Library Version 1.9 or higher. See [Build templated media     apps](https://developer.android.com/training/cars/apps/media) for more details.
  • Network accessline 317
    Car App Library Version 1.9 or higher. See [Build templated media     apps](https://developer.android.com/training/cars/apps/media) for more details.   - Categories affected: Media (templated)
  • Network accessline 317
    Car App Library Version 1.9 or higher. See [Build templated media     apps](https://developer.android.com/training/cars/apps/media) for more details.   - Categories affected: Media (templated)
  • Network accessline 318
    apps](https://developer.android.com/training/cars/apps/media) for more details.
  • Network accessline 318
    apps](https://developer.android.com/training/cars/apps/media) for more details.
  • Network accessline 321
    - New criterion:     [`MFT-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MFT-3)
  • Network accessline 321
    - New criterion:     [`MFT-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MFT-3)
  • Network accessline 322
    [`MFT-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MFT-3)
  • Network accessline 322
    [`MFT-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MFT-3)
  • Network accessline 325
    handle the `androidx.car.app.media.action.SHOW_MEDIA_PLAYBACK` intent     action to direct the user to the `MediaPlaybackTemplate`. See [handle     system media playback intents](https://developer.android.com/training/cars/apps/media#sys-me
  • Network accessline 325
    handle the `androidx.car.app.media.action.SHOW_MEDIA_PLAYBACK` intent     action to direct the user to the `MediaPlaybackTemplate`. See [handle     system media playback intents](https://developer.android.com/training/cars/apps/media#sys-me
  • Network accessline 326
    action to direct the user to the `MediaPlaybackTemplate`. See [handle     system media playback intents](https://developer.android.com/training/cars/apps/media#sys-media-playback-intents) for more     details.
  • Network accessline 326
    action to direct the user to the `MediaPlaybackTemplate`. See [handle     system media playback intents](https://developer.android.com/training/cars/apps/media#sys-media-playback-intents) for more     details.
  • Network accessline 327
    system media playback intents](https://developer.android.com/training/cars/apps/media#sys-media-playback-intents) for more
  • Network accessline 327
    system media playback intents](https://developer.android.com/training/cars/apps/media#sys-media-playback-intents) for more
  • Network accessline 332
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Communication --- messaging notifications" replaces the "Messaging" category. "Communication --- templated messaging" and "Communicat
  • Network accessline 332
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Communication --- messaging notifications" replaces the "Messaging" category. "Communication --- templated messaging" and "Communicat
  • Network accessline 335
    - Categories affected: Games   - New criterion:     [`EP-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#EP-3)
  • Network accessline 335
    - Categories affected: Games   - New criterion:     [`EP-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#EP-3)
  • Network accessline 337
    [`EP-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#EP-3)
  • Network accessline 337
    [`EP-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#EP-3)
  • Network accessline 343
    - Categories affected: Games, Video, Browser   - Updated criterion: [`DO-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DO-1)
  • Network accessline 343
    - Categories affected: Games, Video, Browser   - Updated criterion: [`DO-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DO-1)
  • Network accessline 344
    - Updated criterion: [`DO-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DO-1)
  • Network accessline 344
    - Updated criterion: [`DO-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DO-1)
  • Network accessline 347
    The app can be distributed to devices with fixed screen orientations.     See [Required Android Automotive OS features](https://developer.android.com/training/cars/parked#required-features).
  • Network accessline 347
    The app can be distributed to devices with fixed screen orientations.     See [Required Android Automotive OS features](https://developer.android.com/training/cars/parked#required-features).
  • Network accessline 348
    See [Required Android Automotive OS features](https://developer.android.com/training/cars/parked#required-features).
  • Network accessline 348
    See [Required Android Automotive OS features](https://developer.android.com/training/cars/parked#required-features).
  • Network accessline 351
    Android Automotive OS only: The app can be distributed to devices     with fixed screen orientations. See [Required Android Automotive OS     features](https://developer.android.com/training/cars/parked/automotive-os#required-features).
  • Network accessline 351
    Android Automotive OS only: The app can be distributed to devices     with fixed screen orientations. See [Required Android Automotive OS     features](https://developer.android.com/training/cars/parked/automotive-os#required-features).
  • Network accessline 352
    with fixed screen orientations. See [Required Android Automotive OS     features](https://developer.android.com/training/cars/parked/automotive-os#required-features).   - Categories affected: Games
  • Network accessline 352
    with fixed screen orientations. See [Required Android Automotive OS     features](https://developer.android.com/training/cars/parked/automotive-os#required-features).   - Categories affected: Games
  • Network accessline 353
    features](https://developer.android.com/training/cars/parked/automotive-os#required-features).
  • Network accessline 353
    features](https://developer.android.com/training/cars/parked/automotive-os#required-features).
  • Network accessline 356
    - New criterion:     [`DO-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DO-2)
  • Network accessline 356
    - New criterion:     [`DO-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DO-2)
  • Network accessline 357
    [`DO-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DO-2)
  • Network accessline 357
    [`DO-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DO-2)
  • Network accessline 359
    Android Auto only: The app is not significantly pillarboxed when     running on landscape displays. See [Add support for Android Auto to your     parked app](https://developer.android.com/training/cars/parked/auto).
  • Network accessline 359
    Android Auto only: The app is not significantly pillarboxed when     running on landscape displays. See [Add support for Android Auto to your     parked app](https://developer.android.com/training/cars/parked/auto).
  • Network accessline 360
    running on landscape displays. See [Add support for Android Auto to your     parked app](https://developer.android.com/training/cars/parked/auto). - Deep Links
  • Network accessline 360
    running on landscape displays. See [Add support for Android Auto to your     parked app](https://developer.android.com/training/cars/parked/auto). - Deep Links
  • Network accessline 361
    parked app](https://developer.android.com/training/cars/parked/auto).
  • Network accessline 361
    parked app](https://developer.android.com/training/cars/parked/auto).
  • Network accessline 364
    - Categories affected: Video, Games, Browsers   - New criterion:     [`DL-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DL-1)
  • Network accessline 364
    - Categories affected: Video, Games, Browsers   - New criterion:     [`DL-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DL-1)
  • Network accessline 366
    [`DL-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DL-1)
  • Network accessline 366
    [`DL-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DL-1)
  • Network accessline 368
    Android Automotive OS only: The app supports deep links. See     [Handling Android App Links](https://developer.android.com/training/app-links).
  • Network accessline 368
    Android Automotive OS only: The app supports deep links. See     [Handling Android App Links](https://developer.android.com/training/app-links).
  • Network accessline 369
    [Handling Android App Links](https://developer.android.com/training/app-links).
  • Network accessline 369
    [Handling Android App Links](https://developer.android.com/training/app-links).
  • Network accessline 372
    - New criterion:     [`DL-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DL-2)
  • Network accessline 372
    - New criterion:     [`DL-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DL-2)
  • Network accessline 373
    [`DL-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DL-2)
  • Network accessline 373
    [`DL-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DL-2)
  • Network accessline 375
    Android Automotive OS only: The app supports deep links:     - For media apps, see [Add support for Android Automotive OS to your       media app](https://developer.android.com/training/cars/media/automotive-os#support-deep-links).
  • Network accessline 375
    Android Automotive OS only: The app supports deep links:     - For media apps, see [Add support for Android Automotive OS to your       media app](https://developer.android.com/training/cars/media/automotive-os#support-deep-links).
  • Network accessline 376
    - For media apps, see [Add support for Android Automotive OS to your       media app](https://developer.android.com/training/cars/media/automotive-os#support-deep-links).     - For templated apps, see [Add support for Android Automotive OS 
  • Network accessline 376
    - For media apps, see [Add support for Android Automotive OS to your       media app](https://developer.android.com/training/cars/media/automotive-os#support-deep-links).     - For templated apps, see [Add support for Android Automotive OS 
  • Network accessline 377
    media app](https://developer.android.com/training/cars/media/automotive-os#support-deep-links).
  • Network accessline 377
    media app](https://developer.android.com/training/cars/media/automotive-os#support-deep-links).
  • Network accessline 378
    - For templated apps, see [Add support for Android Automotive OS to       your templated app](https://developer.android.com/training/cars/apps/automotive-os#support-deep-links). - CPU Architectures
  • Network accessline 378
    - For templated apps, see [Add support for Android Automotive OS to       your templated app](https://developer.android.com/training/cars/apps/automotive-os#support-deep-links). - CPU Architectures
  • Network accessline 379
    your templated app](https://developer.android.com/training/cars/apps/automotive-os#support-deep-links).
  • Network accessline 379
    your templated app](https://developer.android.com/training/cars/apps/automotive-os#support-deep-links).
  • Network accessline 388
    - Categories affected: Video   - New criterion:     [`DD-4`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-4)
  • Network accessline 388
    - Categories affected: Video   - New criterion:     [`DD-4`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-4)
  • Network accessline 390
    [`DD-4`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-4)
  • Network accessline 390
    [`DD-4`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-4)
  • Network accessline 392
    The app supports audio while driving on capable devices. See [Support     audio while driving](https://developer.android.com/training/cars/parked/video#audio-while-driving) for additional details.
  • Network accessline 392
    The app supports audio while driving on capable devices. See [Support     audio while driving](https://developer.android.com/training/cars/parked/video#audio-while-driving) for additional details.
  • Network accessline 393
    audio while driving](https://developer.android.com/training/cars/parked/video#audio-while-driving) for additional details.
  • Network accessline 393
    audio while driving](https://developer.android.com/training/cars/parked/video#audio-while-driving) for additional details.
  • Network accessline 395
    > [!IMPORTANT]     > **Important:** The app must meet [`DD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-2) on devices that don't support audio while driving.
  • Network accessline 395
    > [!IMPORTANT]     > **Important:** The app must meet [`DD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-2) on devices that don't support audio while driving.
  • Network accessline 396
    > **Important:** The app must meet [`DD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-2) on devices that don't support audio while driving.
  • Network accessline 396
    > **Important:** The app must meet [`DD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-2) on devices that don't support audio while driving.
  • Network accessline 400
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Weather" has been added, including the introduction of the Weather Functionality criteria.
  • Network accessline 400
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Weather" has been added, including the introduction of the Weather Functionality criteria.
  • Network accessline 403
    - Categories affected: Navigation, POI, Weather   - New criterion:     [`MR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MR-1)
  • Network accessline 403
    - Categories affected: Navigation, POI, Weather   - New criterion:     [`MR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MR-1)
  • Network accessline 405
    [`MR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MR-1)
  • Network accessline 405
    [`MR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MR-1)
  • Network accessline 407
    By default, apps that [draw maps](https://developer.android.com/training/cars/apps#draw-maps) must draw a
  • Network accessline 407
    By default, apps that [draw maps](https://developer.android.com/training/cars/apps#draw-maps) must draw a
  • Network accessline 409
    information, see [Support dark theme](https://developer.android.com/training/cars#dark-theme).
  • Network accessline 409
    information, see [Support dark theme](https://developer.android.com/training/cars#dark-theme).
  • Network accessline 415
    - Removed criterion: `NF-8`   - Categories affected: Navigation Replacement of criterion NF-8 by the [`MR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MR-1) criterion.
  • Network accessline 415
    - Removed criterion: `NF-8`   - Categories affected: Navigation Replacement of criterion NF-8 by the [`MR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MR-1) criterion.
  • Network accessline 416
    - Categories affected: Navigation Replacement of criterion NF-8 by the [`MR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MR-1) criterion.
  • Network accessline 416
    - Categories affected: Navigation Replacement of criterion NF-8 by the [`MR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MR-1) criterion.
  • Network accessline 417
    - Updated criterion: [`NF-9`](https://developer.android.com/docs/quality-guidelines/car-app-quality#NF-9)
  • Network accessline 417
    - Updated criterion: [`NF-9`](https://developer.android.com/docs/quality-guidelines/car-app-quality#NF-9)
  • Network accessline 421
    The app supports rendering on cluster displays, and only renders map     tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 421
    The app supports rendering on cluster displays, and only renders map     tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 422
    tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).   - New text:
  • Network accessline 422
    tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).   - New text:
  • Network accessline 423
    [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 423
    [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 426
    The app supports rendering on cluster displays, and only renders map     tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 426
    The app supports rendering on cluster displays, and only renders map     tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 428
    [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 428
    [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 434
    - Updated criterion: [`SA-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#SA-1)
  • Network accessline 434
    - Updated criterion: [`SA-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#SA-1)
  • Network accessline 450
    - Introduction of the [Car quality tiers](https://developer.android.com/docs/quality-guidelines/car-app-quality#car-quality-tiers)
  • Network accessline 450
    - Introduction of the [Car quality tiers](https://developer.android.com/docs/quality-guidelines/car-app-quality#car-quality-tiers)
  • Network accessline 453
    - Categories affected: Browsers, Games, Video   - New criterion:     [`DD-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-3)
  • Network accessline 453
    - Categories affected: Browsers, Games, Video   - New criterion:     [`DD-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-3)
  • Network accessline 455
    [`DD-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-3)
  • Network accessline 455
    [`DD-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-3)
  • Network accessline 460
    [Ensure there are no distraction optimized     activities](https://developer.android.com/training/cars/parked#ensure_there_are_no_distraction-optimized_activities).
  • Network accessline 460
    [Ensure there are no distraction optimized     activities](https://developer.android.com/training/cars/parked#ensure_there_are_no_distraction-optimized_activities).
  • Network accessline 461
    activities](https://developer.android.com/training/cars/parked#ensure_there_are_no_distraction-optimized_activities).
  • Network accessline 461
    activities](https://developer.android.com/training/cars/parked#ensure_there_are_no_distraction-optimized_activities).
  • Network accessline 463
    > [!NOTE]     > **Note:** If your app plays audio, it must meet the [`DD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-2) requirement.
  • Network accessline 463
    > [!NOTE]     > **Note:** If your app plays audio, it must meet the [`DD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-2) requirement.
  • Network accessline 464
    > **Note:** If your app plays audio, it must meet the [`DD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-2) requirement.
  • Network accessline 464
    > **Note:** If your app plays audio, it must meet the [`DD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DD-2) requirement.
  • Network accessline 468
    - Categories affected: All categories supported by Android Automotive OS   - New criterion:     [`AR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#AR-1)
  • Network accessline 468
    - Categories affected: All categories supported by Android Automotive OS   - New criterion:     [`AR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#AR-1)
  • Network accessline 470
    [`AR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#AR-1)
  • Network accessline 470
    [`AR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#AR-1)
  • Network accessline 472
    In activities implemented by the app, interactive UI elements must not     be obstructed by system bars or display cutouts. See [Work with window     insets and display cutouts](https://developer.android.com/training/cars/parked/automotive-
  • Network accessline 472
    In activities implemented by the app, interactive UI elements must not     be obstructed by system bars or display cutouts. See [Work with window     insets and display cutouts](https://developer.android.com/training/cars/parked/automotive-
  • Network accessline 473
    be obstructed by system bars or display cutouts. See [Work with window     insets and display cutouts](https://developer.android.com/training/cars/parked/automotive-os#insets-and-cutouts).   - New criterion:
  • Network accessline 473
    be obstructed by system bars or display cutouts. See [Work with window     insets and display cutouts](https://developer.android.com/training/cars/parked/automotive-os#insets-and-cutouts).   - New criterion:
  • Network accessline 474
    insets and display cutouts](https://developer.android.com/training/cars/parked/automotive-os#insets-and-cutouts).
  • Network accessline 474
    insets and display cutouts](https://developer.android.com/training/cars/parked/automotive-os#insets-and-cutouts).
  • Network accessline 476
    [`AR-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#AR-2)
  • Network accessline 476
    [`AR-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#AR-2)
  • Network accessline 479
    space available while ensuring interactive UI elements remain     accessible. See     [Adapt to irregularly shaped displays](https://developer.android.com/training/cars/parked/automotive-os#irregular-displays) for
  • Network accessline 479
    space available while ensuring interactive UI elements remain     accessible. See     [Adapt to irregularly shaped displays](https://developer.android.com/training/cars/parked/automotive-os#irregular-displays) for
  • Network accessline 480
    accessible. See     [Adapt to irregularly shaped displays](https://developer.android.com/training/cars/parked/automotive-os#irregular-displays) for     more details.
  • Network accessline 480
    accessible. See     [Adapt to irregularly shaped displays](https://developer.android.com/training/cars/parked/automotive-os#irregular-displays) for     more details.
  • Network accessline 481
    [Adapt to irregularly shaped displays](https://developer.android.com/training/cars/parked/automotive-os#irregular-displays) for
  • Network accessline 481
    [Adapt to irregularly shaped displays](https://developer.android.com/training/cars/parked/automotive-os#irregular-displays) for
  • Network accessline 485
    - Categories affected: Video   - New criterion:     [`MC-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MC-1)
  • Network accessline 485
    - Categories affected: Video   - New criterion:     [`MC-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MC-1)
  • Network accessline 487
    [`MC-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MC-1)
  • Network accessline 487
    [`MC-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#MC-1)
  • Network accessline 491
    Additionally, the app must provide title and thumbnail metadata for     every media item. See [Control and advertise playback using a     MediaSession](https://developer.android.com/media/media3/session/control-playback).
  • Network accessline 491
    Additionally, the app must provide title and thumbnail metadata for     every media item. See [Control and advertise playback using a     MediaSession](https://developer.android.com/media/media3/session/control-playback).
  • Network accessline 492
    every media item. See [Control and advertise playback using a     MediaSession](https://developer.android.com/media/media3/session/control-playback). - UX
  • Network accessline 492
    every media item. See [Control and advertise playback using a     MediaSession](https://developer.android.com/media/media3/session/control-playback). - UX
  • Network accessline 493
    MediaSession](https://developer.android.com/media/media3/session/control-playback).
  • Network accessline 493
    MediaSession](https://developer.android.com/media/media3/session/control-playback).
  • Network accessline 496
    - Categories affected: Browsers, Games, Video   - New criterion:     [`UX-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-1)
  • Network accessline 496
    - Categories affected: Browsers, Games, Video   - New criterion:     [`UX-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-1)
  • Network accessline 498
    [`UX-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-1)
  • Network accessline 498
    [`UX-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-1)
  • Network accessline 500
    Touch targets are at least 64dp.   - New criterion:     [`UX-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-2)
  • Network accessline 500
    Touch targets are at least 64dp.   - New criterion:     [`UX-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-2)
  • Network accessline 502
    [`UX-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-2)
  • Network accessline 502
    [`UX-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-2)
  • Network accessline 505
    screen edges.   - New criterion:     [`UX-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-3)
  • Network accessline 505
    screen edges.   - New criterion:     [`UX-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-3)
  • Network accessline 507
    [`UX-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-3)
  • Network accessline 507
    [`UX-3`](https://developer.android.com/docs/quality-guidelines/car-app-quality#UX-3)
  • Network accessline 512
    - Categories affected: Media, Navigation, POI, IOT   - New criterion:     [`PE-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#PE-1)
  • Network accessline 512
    - Categories affected: Media, Navigation, POI, IOT   - New criterion:     [`PE-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#PE-1)
  • Network accessline 514
    [`PE-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#PE-1)
  • Network accessline 514
    [`PE-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#PE-1)
  • Network accessline 521
    - Categories affected: Navigation   - New criterion:     [`NF-9`](https://developer.android.com/docs/quality-guidelines/car-app-quality#NF-9)
  • Network accessline 521
    - Categories affected: Navigation   - New criterion:     [`NF-9`](https://developer.android.com/docs/quality-guidelines/car-app-quality#NF-9)
  • Network accessline 523
    [`NF-9`](https://developer.android.com/docs/quality-guidelines/car-app-quality#NF-9)
  • Network accessline 523
    [`NF-9`](https://developer.android.com/docs/quality-guidelines/car-app-quality#NF-9)
  • Network accessline 525
    The app supports rendering on cluster displays, and only renders map     tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 525
    The app supports rendering on cluster displays, and only renders map     tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 526
    tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display). - Delayed Response
  • Network accessline 526
    tiles on these displays. See     [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display). - Delayed Response
  • Network accessline 527
    [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 527
    [Drawing to the cluster display](https://developer.android.com/training/cars/apps/navigation#drawing-cluster-display).
  • Network accessline 530
    - Categories affected: Video   - Removal of criteria [`DR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DR-1) , [`DR-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DR-2) , and [`DR-3`](
  • Network accessline 530
    - Categories affected: Video   - Removal of criteria [`DR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DR-1) , [`DR-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DR-2) , and [`DR-3`](
  • Network accessline 531
    - Removal of criteria [`DR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DR-1) , [`DR-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DR-2) , and [`DR-3`](https://developer.android.com/d
  • Network accessline 531
    - Removal of criteria [`DR-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DR-1) , [`DR-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#DR-2) , and [`DR-3`](https://developer.android.com/d
  • Network accessline 535
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Browsers" has been added
  • Network accessline 535
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Browsers" has been added
  • Network accessline 538
    - Categories affected: Browsers   - New criterion:     [`SD-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#SD-1)
  • Network accessline 538
    - Categories affected: Browsers   - New criterion:     [`SD-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#SD-1)
  • Network accessline 540
    [`SD-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#SD-1)
  • Network accessline 540
    [`SD-1`](https://developer.android.com/docs/quality-guidelines/car-app-quality#SD-1)
  • Network accessline 542
    Browsers must not save or allow access to passwords or payment     information unless the user can block access to passwords using a     profile lock. [Learn how](https://developer.android.com/training/cars/parked/browser#block-sensitive).
  • Network accessline 542
    Browsers must not save or allow access to passwords or payment     information unless the user can block access to passwords using a     profile lock. [Learn how](https://developer.android.com/training/cars/parked/browser#block-sensitive).
  • Network accessline 543
    information unless the user can block access to passwords using a     profile lock. [Learn how](https://developer.android.com/training/cars/parked/browser#block-sensitive).   - New criterion:
  • Network accessline 543
    information unless the user can block access to passwords using a     profile lock. [Learn how](https://developer.android.com/training/cars/parked/browser#block-sensitive).   - New criterion:
  • Network accessline 544
    profile lock. [Learn how](https://developer.android.com/training/cars/parked/browser#block-sensitive).
  • Network accessline 544
    profile lock. [Learn how](https://developer.android.com/training/cars/parked/browser#block-sensitive).
  • Network accessline 546
    [`SD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#SD-2)
  • Network accessline 546
    [`SD-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#SD-2)
  • Network accessline 555
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Games" has been added
  • Network accessline 555
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Games" has been added
  • Network accessline 558
    - Categories affected: Games, Video   - New criterion:     [`IN-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#IN-2)
  • Network accessline 558
    - Categories affected: Games, Video   - New criterion:     [`IN-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#IN-2)
  • Network accessline 560
    [`IN-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#IN-2)
  • Network accessline 560
    [`IN-2`](https://developer.android.com/docs/quality-guidelines/car-app-quality#IN-2)
  • Network accessline 600
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Parking \& Charging" has been replaced with "Point of Interest"
  • Network accessline 600
    - [App Categories](https://developer.android.com/docs/quality-guidelines/car-app-quality#app-categories): "Parking \& Charging" has been replaced with "Point of Interest"
  • Network accessline 636
    The app does not include games or other features outside the app types     intended for cars. For more information, see [Supported app     categories](https://developer.android.com/training/cars#supported-app-categories).
  • Network accessline 636
    The app does not include games or other features outside the app types     intended for cars. For more information, see [Supported app     categories](https://developer.android.com/training/cars#supported-app-categories).
  • Network accessline 637
    intended for cars. For more information, see [Supported app     categories](https://developer.android.com/training/cars#supported-app-categories).   - New text:
  • Network accessline 637
    intended for cars. For more information, see [Supported app     categories](https://developer.android.com/training/cars#supported-app-categories).   - New text:
  • Network accessline 638
    categories](https://developer.android.com/training/cars#supported-app-categories).
  • Network accessline 638
    categories](https://developer.android.com/training/cars#supported-app-categories).
  • Network accessline 641
    The app does not include features outside the app types intended for     cars. For more information, see     [Supported app categories](https://developer.android.com/training/cars#supported-app-categories).
  • Network accessline 641
    The app does not include features outside the app types intended for     cars. For more information, see     [Supported app categories](https://developer.android.com/training/cars#supported-app-categories).
  • Network accessline 642
    cars. For more information, see     [Supported app categories](https://developer.android.com/training/cars#supported-app-categories). - Visual Information on Phone
  • Network accessline 642
    cars. For more information, see     [Supported app categories](https://developer.android.com/training/cars#supported-app-categories). - Visual Information on Phone
  • Network accessline 643
    [Supported app categories](https://developer.android.com/training/cars#supported-app-categories).
  • Network accessline 643
    [Supported app categories](https://developer.android.com/training/cars#supported-app-categories).
  • Network accessline 651
    message instructing the user to only look at their phone screen when     it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 651
    message instructing the user to only look at their phone screen when     it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 652
    it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle     user input](https://developer.android.com/training/cars/apps#handle-user-input) f
  • Network accessline 652
    it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle     user input](https://developer.android.com/training/cars/apps#handle-user-input) f
  • Network accessline 653
    [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 653
    [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 654
    user input](https://developer.android.com/training/cars/apps#handle-user-input) for navigation, parking, and
  • Network accessline 654
    user input](https://developer.android.com/training/cars/apps#handle-user-input) for navigation, parking, and
  • Network accessline 660
    message instructing the user to only look at their phone screen when     it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 660
    message instructing the user to only look at their phone screen when     it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 661
    it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle     user input](https://developer.android.com/training/cars/apps#handle-user-input) f
  • Network accessline 661
    it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle     user input](https://developer.android.com/training/cars/apps#handle-user-input) f
  • Network accessline 662
    [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 662
    [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 663
    user input](https://developer.android.com/training/cars/apps#handle-user-input) for navigation and point of
  • Network accessline 663
    user input](https://developer.android.com/training/cars/apps#handle-user-input) for navigation and point of
  • Network accessline 753
    of visual information such as notifications, toasts, video, images,     advertising, or similar. For more information, see [Build a navigation     app](https://developer.android.com/training/cars/apps/navigation#handle-user-input) for navig
  • Network accessline 753
    of visual information such as notifications, toasts, video, images,     advertising, or similar. For more information, see [Build a navigation     app](https://developer.android.com/training/cars/apps/navigation#handle-user-input) for navig
  • Network accessline 754
    advertising, or similar. For more information, see [Build a navigation     app](https://developer.android.com/training/cars/apps/navigation#handle-user-input) for navigation, parking, and charging.     Similarly, while the app is running An
  • Network accessline 754
    advertising, or similar. For more information, see [Build a navigation     app](https://developer.android.com/training/cars/apps/navigation#handle-user-input) for navigation, parking, and charging.     Similarly, while the app is running An
  • Network accessline 755
    app](https://developer.android.com/training/cars/apps/navigation#handle-user-input) for navigation, parking, and charging.
  • Network accessline 755
    app](https://developer.android.com/training/cars/apps/navigation#handle-user-input) for navigation, parking, and charging.
  • Network accessline 767
    message instructing the user to only look at their phone screen when     it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 767
    message instructing the user to only look at their phone screen when     it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 768
    it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle     user input](https://developer.android.com/training/cars/apps#handle-user-input) f
  • Network accessline 768
    it's safe to do so. For more information, see     [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle     user input](https://developer.android.com/training/cars/apps#handle-user-input) f
  • Network accessline 769
    [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 769
    [Handle general errors](https://developer.android.com/training/cars/media#errors) for media, and [Handle
  • Network accessline 770
    user input](https://developer.android.com/training/cars/apps#handle-user-input) for navigation, parking, and
  • Network accessline 770
    user input](https://developer.android.com/training/cars/apps#handle-user-input) for navigation, parking, and
  • Network accessline 780
    The app must have simple flows if purchases are enabled, using shortcuts     such as recent or favorite purchases. For more information, see     [Purchase using existing payment method](https://developers.google.com/cars/design/create-apps/
  • Network accessline 780
    The app must have simple flows if purchases are enabled, using shortcuts     such as recent or favorite purchases. For more information, see     [Purchase using existing payment method](https://developers.google.com/cars/design/create-apps/
  • Network accessline 782
    [Purchase using existing payment method](https://developers.google.com/cars/design/create-apps/sample-flows/purchase-with-existing-method).
  • Network accessline 782
    [Purchase using existing payment method](https://developers.google.com/cars/design/create-apps/sample-flows/purchase-with-existing-method).

device-ai/appfunctions/references/implementation-configuration.md

  • Network accessline 38
    <AppFunctionAppMetadata xmlns:appfn="http://schemas.android.com/apk/androidx.appfunctions"
  • Network accessline 38
    <AppFunctionAppMetadata xmlns:appfn="http://schemas.android.com/apk/androidx.appfunctions"

device-ai/appfunctions/references/migrate-to-service-entry-point.md

  • Network accessline 63
    > [!NOTE] > **Note:** If another dependency in your project uses snapshot builds like `1.0.0-SNAPSHOT` or custom snapshot repositories from `https://androidx.dev/snapshots/...`, preserve your custom snapshot repository configuration in `set
  • Network accessline 63
    > [!NOTE] > **Note:** If another dependency in your project uses snapshot builds like `1.0.0-SNAPSHOT` or custom snapshot repositories from `https://androidx.dev/snapshots/...`, preserve your custom snapshot repository configuration in `set
  • Network accessline 64
    > **Note:** If another dependency in your project uses snapshot builds like `1.0.0-SNAPSHOT` or custom snapshot repositories from `https://androidx.dev/snapshots/...`, preserve your custom snapshot repository configuration in `settings.grad
  • Network accessline 64
    > **Note:** If another dependency in your project uses snapshot builds like `1.0.0-SNAPSHOT` or custom snapshot repositories from `https://androidx.dev/snapshots/...`, preserve your custom snapshot repository configuration in `settings.grad

device-ai/litert/litert-lm/SKILL.md

  • Network accessline 32
    When a LiteRT-LM class or method that this skill uses doesn't compile, you must read the [LiteRT-LM Android guide](https://ai.google.dev/edge/litert-lm/android) and the [LiteRT-LM README](https://github.com/google-ai-edge/LiteRT-LM/blob/mai
  • Network accessline 32
    When a LiteRT-LM class or method that this skill uses doesn't compile, you must read the [LiteRT-LM Android guide](https://ai.google.dev/edge/litert-lm/android) and the [LiteRT-LM README](https://github.com/google-ai-edge/LiteRT-LM/blob/mai
  • Network accessline 33
    read the [LiteRT-LM Android guide](https://ai.google.dev/edge/litert-lm/android) and the [LiteRT-LM README](https://github.com/google-ai-edge/LiteRT-LM/blob/main/README.md) before
  • Network accessline 33
    read the [LiteRT-LM Android guide](https://ai.google.dev/edge/litert-lm/android) and the [LiteRT-LM README](https://github.com/google-ai-edge/LiteRT-LM/blob/main/README.md) before
  • Network accessline 104
    Choose a `.litertlm` file from [litert-community](https://huggingface.co/litert-community) on Hugging Face. Start with
  • Network accessline 104
    Choose a `.litertlm` file from [litert-community](https://huggingface.co/litert-community) on Hugging Face. Start with
  • Network accessline 344
    - When the app uses Path C in Step 3, create the AI pack module that holds the `.litertlm` file and upload the app to Play Console. - When no `.litertlm` file exists for the model, convert the model on a workstation. This skill doesn't conv
  • Network accessline 344
    - When the app uses Path C in Step 3, create the AI pack module that holds the `.litertlm` file and upload the app to Play Console. - When no `.litertlm` file exists for the model, convert the model on a workstation. This skill doesn't conv
  • Network accessline 346
    - When the user asks for a complete reference app, point them to [Google AI Edge Gallery](https://github.com/google-ai-edge/gallery/blob/main/README.md).
  • Network accessline 346
    - When the user asks for a complete reference app, point them to [Google AI Edge Gallery](https://github.com/google-ai-edge/gallery/blob/main/README.md).

device-ai/litert/litert-lm/references/android/google/play/on-device-ai.md

  • Network accessline 3
    Play for On-device AI brings the benefits of [Android App Bundles](https://developer.android.com/guide/app-bundle) and Google Play delivery to custom ML
  • Network accessline 3
    Play for On-device AI brings the benefits of [Android App Bundles](https://developer.android.com/guide/app-bundle) and Google Play delivery to custom ML
  • Network accessline 4
    [Android App Bundles](https://developer.android.com/guide/app-bundle) and Google Play delivery to custom ML
  • Network accessline 4
    [Android App Bundles](https://developer.android.com/guide/app-bundle) and Google Play delivery to custom ML
  • Network accessline 22
    - By using Play for On-device AI you agree to the terms in the [Google Play Developer Distribution Agreement](https://play.google.com/about/developer-distribution-agreement.html) and the [Play Core Software Development Kit Terms of Service]
  • Network accessline 22
    - By using Play for On-device AI you agree to the terms in the [Google Play Developer Distribution Agreement](https://play.google.com/about/developer-distribution-agreement.html) and the [Play Core Software Development Kit Terms of Service]
  • Network accessline 42
    AI packs only contain models. Java/Kotlin and native libraries are not allowed. If you need to ship libraries or code to run your ML model, move it into the base module or a [feature module](https://developer.android.com/guide/playcore/feat
  • Network accessline 42
    AI packs only contain models. Java/Kotlin and native libraries are not allowed. If you need to ship libraries or code to run your ML model, move it into the base module or a [feature module](https://developer.android.com/guide/playcore/feat
  • Network accessline 43
    If you need to ship libraries or code to run your ML model, move it into the base module or a [feature module](https://developer.android.com/guide/playcore/feature-delivery). You can configure your feature module so that it has the same dow
  • Network accessline 43
    If you need to ship libraries or code to run your ML model, move it into the base module or a [feature module](https://developer.android.com/guide/playcore/feature-delivery). You can configure your feature module so that it has the same dow
  • Network accessline 44
    base module or a [feature module](https://developer.android.com/guide/playcore/feature-delivery). You can configure your feature module so that it has the same download and targeting settings as the AI pack.
  • Network accessline 44
    base module or a [feature module](https://developer.android.com/guide/playcore/feature-delivery). You can configure your feature module so that it has the same download and targeting settings as the AI pack.
  • Network accessline 48
    > [!NOTE] > **Note:** AI packs don't contain Java/Kotlin or native libraries. You can ship libraries or code to run your ML models in [feature modules](https://developer.android.com/guide/playcore/feature-delivery).
  • Network accessline 48
    > [!NOTE] > **Note:** AI packs don't contain Java/Kotlin or native libraries. You can ship libraries or code to run your ML models in [feature modules](https://developer.android.com/guide/playcore/feature-delivery).
  • Network accessline 49
    > **Note:** AI packs don't contain Java/Kotlin or native libraries. You can ship libraries or code to run your ML models in [feature modules](https://developer.android.com/guide/playcore/feature-delivery).
  • Network accessline 49
    > **Note:** AI packs don't contain Java/Kotlin or native libraries. You can ship libraries or code to run your ML models in [feature modules](https://developer.android.com/guide/playcore/feature-delivery).
  • Network accessline 53
    You can use LiteRT and MediaPipe with AI packs. Package your model in an AI pack and then access it using the instructions for [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for
  • Network accessline 53
    You can use LiteRT and MediaPipe with AI packs. Package your model in an AI pack and then access it using the instructions for [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for
  • Network accessline 54
    and then access it using the instructions for [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for [fast-follow and on-demand packs](https://developer.android.com/google/play/on-device-ai
  • Network accessline 54
    and then access it using the instructions for [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for [fast-follow and on-demand packs](https://developer.android.com/google/play/on-device-ai
  • Network accessline 55
    [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for
  • Network accessline 55
    [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for
  • Network accessline 56
    [fast-follow and on-demand packs](https://developer.android.com/google/play/on-device-ai#ff-od-delivery).
  • Network accessline 56
    [fast-follow and on-demand packs](https://developer.android.com/google/play/on-device-ai#ff-od-delivery).
  • Network accessline 60
    - [Getting started with LiteRT](https://ai.google.dev/edge/litert/android)
  • Network accessline 60
    - [Getting started with LiteRT](https://ai.google.dev/edge/litert/android)
  • Network accessline 61
    - The [sample app](https://developer.android.com/google/play/on-device-ai#example-app) shows how you can package a LiteRT model in an AI pack and load it at runtime.
  • Network accessline 61
    - The [sample app](https://developer.android.com/google/play/on-device-ai#example-app) shows how you can package a LiteRT model in an AI pack and load it at runtime.
  • Network accessline 62
    - There are many [pretrained LiteRT models](https://ai.google.dev/edge/litert/models/trained) that you can use in AI packs to get started.
  • Network accessline 62
    - There are many [pretrained LiteRT models](https://ai.google.dev/edge/litert/models/trained) that you can use in AI packs to get started.
  • Network accessline 63
    - [Getting started with MediaPipe](https://ai.google.dev/edge/mediapipe/framework/getting_started/android)
  • Network accessline 63
    - [Getting started with MediaPipe](https://ai.google.dev/edge/mediapipe/framework/getting_started/android)
  • Network accessline 64
    - For fast-follow and on-demand packs, you can use [AssetCache.java](https://github.com/google-ai-edge/mediapipe/blob/master/mediapipe/java/com/google/mediapipe/framework/AssetCache.java) to load your assets (eg. `.binarypb` files) by their
  • Network accessline 64
    - For fast-follow and on-demand packs, you can use [AssetCache.java](https://github.com/google-ai-edge/mediapipe/blob/master/mediapipe/java/com/google/mediapipe/framework/AssetCache.java) to load your assets (eg. `.binarypb` files) by their
  • Network accessline 65
    - For install-time packs, you can use [AndroidAssetUtil.java](https://github.com/google-ai-edge/mediapipe/blob/master/mediapipe/java/com/google/mediapipe/framework/AndroidAssetUtil.java#L56).
  • Network accessline 65
    - For install-time packs, you can use [AndroidAssetUtil.java](https://github.com/google-ai-edge/mediapipe/blob/master/mediapipe/java/com/google/mediapipe/framework/AndroidAssetUtil.java#L56).
  • Network accessline 71
    1. Package your models into AI packs into your Android App Bundle and specify how the AI packs should be delivered. 2. \[Optional\] If you want to deliver different models to different devices, you can [configure device targeting](https://d
  • Network accessline 71
    1. Package your models into AI packs into your Android App Bundle and specify how the AI packs should be delivered. 2. \[Optional\] If you want to deliver different models to different devices, you can [configure device targeting](https://d
  • Network accessline 72
    2. \[Optional\] If you want to deliver different models to different devices, you can [configure device targeting](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) for your AI packs. For example, you co
  • Network accessline 72
    2. \[Optional\] If you want to deliver different models to different devices, you can [configure device targeting](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) for your AI packs. For example, you co
  • Network accessline 130
    7. Add code to load and run your models. How you do this will depend on the    delivery mode of your AI packs. See instructions for    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and
  • Network accessline 130
    7. Add code to load and run your models. How you do this will depend on the    delivery mode of your AI packs. See instructions for    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and
  • Network accessline 131
    delivery mode of your AI packs. See instructions for    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and    [fast-follow/on-demand](https://developer.android.com/google/play/on-device-ai#ff-od
  • Network accessline 131
    delivery mode of your AI packs. See instructions for    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and    [fast-follow/on-demand](https://developer.android.com/google/play/on-device-ai#ff-od
  • Network accessline 132
    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and
  • Network accessline 132
    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and
  • Network accessline 133
    [fast-follow/on-demand](https://developer.android.com/google/play/on-device-ai#ff-od-delivery) below.
  • Network accessline 133
    [fast-follow/on-demand](https://developer.android.com/google/play/on-device-ai#ff-od-delivery) below.
  • Network accessline 135
    8. \[Optional\] [Configure device targeting](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration)
  • Network accessline 135
    8. \[Optional\] [Configure device targeting](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration)
  • Network accessline 138
    9. [Build the Android App Bundle with Gradle](https://developer.android.com/studio/build/building-cmdline#build_bundle).
  • Network accessline 138
    9. [Build the Android App Bundle with Gradle](https://developer.android.com/studio/build/building-cmdline#build_bundle).
  • Network accessline 178
    Each AI pack is stored in a separate folder in the app's internal storage. Use the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 178
    Each AI pack is stored in a separate folder in the app's internal storage. Use the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 179
    the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String)) method to determine the root folder of an AI pack. This method returns the
  • Network accessline 179
    the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String)) method to determine the root folder of an AI pack. This method returns the
  • Network accessline 180
    [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 180
    [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 184
    | Return value | Status | |---|---| | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](htt
  • Network accessline 184
    | Return value | Status | |---|---| | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](htt
  • Network accessline 185
    |---|---| | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](https://developer.android.com
  • Network accessline 185
    |---|---| | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](https://developer.android.com
  • Network accessline 186
    | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](https://developer.android.com/reference
  • Network accessline 186
    | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](https://developer.android.com/reference
  • Network accessline 196
    [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates(java.util.List%3Cjava.lang.String%3E)) method to determine the size of the download and whether the pack is already
  • Network accessline 196
    [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates(java.util.List%3Cjava.lang.String%3E)) method to determine the size of the download and whether the pack is already
  • Network accessline 204
    `getPackStates()` is an asynchronous method that returns a `Task<AiPackStates>`. The [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates())
  • Network accessline 204
    `getPackStates()` is an asynchronous method that returns a `Task<AiPackStates>`. The [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates())
  • Network accessline 205
    The [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates()) method of an `AiPackStates` object returns a `Map<String, AiPackState>`. This
  • Network accessline 205
    The [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates()) method of an `AiPackStates` object returns a `Map<String, AiPackState>`. This
  • Network accessline 206
    [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates())
  • Network accessline 206
    [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates())
  • Network accessline 235
    The following [`AiPackState`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState)
  • Network accessline 235
    The following [`AiPackState`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState)
  • Network accessline 236
    [`AiPackState`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState)
  • Network accessline 236
    [`AiPackState`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState)
  • Network accessline 240
    - [`totalBytesToDownload()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#totalBytesToDownload())
  • Network accessline 240
    - [`totalBytesToDownload()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#totalBytesToDownload())
  • Network accessline 241
    - [`bytesDownloaded()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#bytesDownloaded())
  • Network accessline 241
    - [`bytesDownloaded()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#bytesDownloaded())
  • Network accessline 242
    - [`transferProgressPercentage()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#transferProgressPercentage())
  • Network accessline 242
    - [`transferProgressPercentage()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#transferProgressPercentage())
  • Network accessline 244
    To get the status of an AI pack, use the [`status()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#status())
  • Network accessline 244
    To get the status of an AI pack, use the [`status()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#status())
  • Network accessline 245
    [`status()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#status())
  • Network accessline 245
    [`status()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#status())
  • Network accessline 246
    method, which returns the status as an integer that corresponds to a constant field in the [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus)
  • Network accessline 246
    method, which returns the status as an integer that corresponds to a constant field in the [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus)
  • Network accessline 247
    field in the [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus) class. An AI pack that's not installed yet has the status
  • Network accessline 247
    field in the [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus) class. An AI pack that's not installed yet has the status
  • Network accessline 248
    [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus)
  • Network accessline 248
    [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus)
  • Network accessline 252
    If a request fails, use the [`errorCode()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#errorCode())
  • Network accessline 252
    If a request fails, use the [`errorCode()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#errorCode())
  • Network accessline 253
    [`errorCode()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#errorCode())
  • Network accessline 253
    [`errorCode()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#errorCode())
  • Network accessline 254
    method, whose return value corresponds to a constant field in the [`AiPackErrorCode`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackErrorCode) class.
  • Network accessline 254
    method, whose return value corresponds to a constant field in the [`AiPackErrorCode`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackErrorCode) class.
  • Network accessline 255
    [`AiPackErrorCode`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackErrorCode)
  • Network accessline 255
    [`AiPackErrorCode`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackErrorCode)
  • Network accessline 260
    Use the [`fetch()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#fetch(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 260
    Use the [`fetch()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#fetch(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 261
    [`fetch()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#fetch(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 261
    [`fetch()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#fetch(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 266
    Task<AiPackStates> fetch(List<String> packNames)
  • Network accessline 266
    Task<AiPackStates> fetch(List<String> packNames)
  • Network accessline 269
    This method returns an [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) object containing a list of packs and their initial download states and sizes.
  • Network accessline 269
    This method returns an [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) object containing a list of packs and their initial download states and sizes.
  • Network accessline 270
    [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) object containing a list of packs and their initial download states and sizes. If an AI pack requested via `fetch()` is already down
  • Network accessline 270
    [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) object containing a list of packs and their initial download states and sizes. If an AI pack requested via `fetch()` is already down
  • Network accessline 271
    object containing a list of packs and their initial download states and sizes. If an AI pack requested via `fetch()` is already downloading, the download status is returned and no additional download is started.
  • Network accessline 271
    object containing a list of packs and their initial download states and sizes. If an AI pack requested via `fetch()` is already downloading, the download status is returned and no additional download is started.
  • Network accessline 272
    If an AI pack requested via `fetch()` is already downloading, the download
  • Network accessline 272
    If an AI pack requested via `fetch()` is already downloading, the download
  • Network accessline 280
    You should implement an [`AiPackStateUpdateListener`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStateUpdateListener)
  • Network accessline 280
    You should implement an [`AiPackStateUpdateListener`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStateUpdateListener)
  • Network accessline 281
    [`AiPackStateUpdateListener`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStateUpdateListener)
  • Network accessline 281
    [`AiPackStateUpdateListener`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStateUpdateListener)
  • Network accessline 292
    > [!NOTE] > **Note:** The Play Store automatically triggers the download of any `fast-follow` packs after the user installs or updates the app. However, these packs may not be ready to use immediately. You must check the status of the `fast
  • Network accessline 292
    > [!NOTE] > **Note:** The Play Store automatically triggers the download of any `fast-follow` packs after the user installs or updates the app. However, these packs may not be ready to use immediately. You must check the status of the `fast
  • Network accessline 293
    > **Note:** The Play Store automatically triggers the download of any `fast-follow` packs after the user installs or updates the app. However, these packs may not be ready to use immediately. You must check the status of the `fast-follow` p
  • Network accessline 293
    > **Note:** The Play Store automatically triggers the download of any `fast-follow` packs after the user installs or updates the app. However, these packs may not be ready to use immediately. You must check the status of the `fast-follow` p
  • Network accessline 302
    `WAITING_FOR_WIFI`. To trigger the UI flow to prompt the user for consent, use the [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activ
  • Network accessline 302
    `WAITING_FOR_WIFI`. To trigger the UI flow to prompt the user for consent, use the [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activ
  • Network accessline 303
    the [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderReques
  • Network accessline 303
    the [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderReques
  • Network accessline 304
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 304
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 312
    If a pack has the `REQUIRES_USER_CONFIRMATION` status, the download won't proceed until the user accepts the dialog that is shown with [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks
  • Network accessline 312
    If a pack has the `REQUIRES_USER_CONFIRMATION` status, the download won't proceed until the user accepts the dialog that is shown with [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks
  • Network accessline 313
    proceed until the user accepts the dialog that is shown with [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityRes
  • Network accessline 313
    proceed until the user accepts the dialog that is shown with [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityRes
  • Network accessline 314
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 314
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 315
    This status can occur when the app is not recognized by Play---for example, if the app was sideloaded. Note that calling [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager
  • Network accessline 315
    This status can occur when the app is not recognized by Play---for example, if the app was sideloaded. Note that calling [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager
  • Network accessline 316
    app was sideloaded. Note that calling [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.
  • Network accessline 316
    app was sideloaded. Note that calling [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.
  • Network accessline 317
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 317
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 391
    Alternatively, you can use the [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates())
  • Network accessline 391
    Alternatively, you can use the [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates())
  • Network accessline 392
    [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates())
  • Network accessline 392
    [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates())
  • Network accessline 393
    method to get the status of current downloads. [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) contains the download progress, download status, and any failure error codes.
  • Network accessline 393
    method to get the status of current downloads. [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) contains the download progress, download status, and any failure error codes.
  • Network accessline 394
    [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates)
  • Network accessline 394
    [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates)
  • Network accessline 399
    You can access an AI pack using file system calls after the download request reaches the [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed())
  • Network accessline 399
    You can access an AI pack using file system calls after the download request reaches the [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed())
  • Network accessline 400
    reaches the [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed()) state. Use the
  • Network accessline 400
    reaches the [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed()) state. Use the
  • Network accessline 401
    [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed())
  • Network accessline 401
    [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed())
  • Network accessline 402
    state. Use the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String)) method to get the root folder of the AI pack.
  • Network accessline 402
    state. Use the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String)) method to get the root folder of the AI pack.
  • Network accessline 403
    [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 403
    [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 406
    AI packs are stored in the `assets` directory within the AI pack root directory. You can get the path to the `assets` directory by using the convenience method [`assetsPath()`](https://developer.android.com/reference/com/google/android/play
  • Network accessline 406
    AI packs are stored in the `assets` directory within the AI pack root directory. You can get the path to the `assets` directory by using the convenience method [`assetsPath()`](https://developer.android.com/reference/com/google/android/play
  • Network accessline 407
    You can get the path to the `assets` directory by using the convenience method [`assetsPath()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation#assetsPath()). Use the following method to get the p
  • Network accessline 407
    You can get the path to the `assets` directory by using the convenience method [`assetsPath()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation#assetsPath()). Use the following method to get the p
  • Network accessline 408
    [`assetsPath()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation#assetsPath()).
  • Network accessline 408
    [`assetsPath()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation#assetsPath()).
  • Network accessline 429
    You can follow the [device targeting instructions](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) to specify
  • Network accessline 429
    You can follow the [device targeting instructions](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) to specify
  • Network accessline 430
    [device targeting instructions](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) to specify
  • Network accessline 430
    [device targeting instructions](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) to specify
  • Network accessline 439
    Use [`cancel()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#cancel(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 439
    Use [`cancel()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#cancel(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 440
    [`cancel()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#cancel(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 440
    [`cancel()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#cancel(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 446
    Use [`removePack()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#removePack(java.lang.String))
  • Network accessline 446
    Use [`removePack()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#removePack(java.lang.String))
  • Network accessline 447
    [`removePack()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#removePack(java.lang.String))
  • Network accessline 447
    [`removePack()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#removePack(java.lang.String))
  • Network accessline 452
    Use [`getPackLocations()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocations())
  • Network accessline 452
    Use [`getPackLocations()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocations())
  • Network accessline 453
    [`getPackLocations()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocations())
  • Network accessline 453
    [`getPackLocations()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocations())
  • Network accessline 468
    - Device model - Device RAM - [System features](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 468
    - Device model - Device RAM - [System features](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 470
    - [System features](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 470
    - [System features](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 483
    To use device targeting, ensure that your Android Gradle Plugin (AGP) version is at least 8.10.0. This is packaged with Android Studio (Meerkat 2 and later). Download the latest [stable version of Android Studio](https://developer.android.c
  • Network accessline 483
    To use device targeting, ensure that your Android Gradle Plugin (AGP) version is at least 8.10.0. This is packaged with Android Studio (Meerkat 2 and later). Download the latest [stable version of Android Studio](https://developer.android.c
  • Network accessline 485
    Download the latest [stable version of Android Studio](https://developer.android.com/studio).
  • Network accessline 485
    Download the latest [stable version of Android Studio](https://developer.android.com/studio).
  • Network accessline 499
    <config:device-targeting-config         xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 499
    <config:device-targeting-config         xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 500
    xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 500
    xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 538
    System   [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 538
    System   [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 539
    [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 539
    [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 546
    System   [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 546
    System   [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 547
    [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 547
    [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 552
    - **manufacturer** : [System on chip manufacturer](https://developer.android.com/reference/android/os/Build#SOC_MANUFACTURER)
  • Network accessline 552
    - **manufacturer** : [System on chip manufacturer](https://developer.android.com/reference/android/os/Build#SOC_MANUFACTURER)
  • Network accessline 553
    - **model** : [System on chip model](https://developer.android.com/reference/android/os/Build#SOC_MODEL)
  • Network accessline 553
    - **model** : [System on chip model](https://developer.android.com/reference/android/os/Build#SOC_MODEL)
  • Network accessline 567
    > is a Pixel 4 - also written as follows: > > ![](https://developer.android.com/static/images/google/play/intersect.png)
  • Network accessline 567
    > is a Pixel 4 - also written as follows: > > ![](https://developer.android.com/static/images/google/play/intersect.png)
  • Network accessline 568
    > > ![](https://developer.android.com/static/images/google/play/intersect.png) >
  • Network accessline 568
    > > ![](https://developer.android.com/static/images/google/play/intersect.png) >
  • Network accessline 569
    > ![](https://developer.android.com/static/images/google/play/intersect.png)
  • Network accessline 569
    > ![](https://developer.android.com/static/images/google/play/intersect.png)
  • Network accessline 583
    > it is a Pixel 4 - also written as follows: > > ![](https://developer.android.com/static/images/google/play/union.png)
  • Network accessline 583
    > it is a Pixel 4 - also written as follows: > > ![](https://developer.android.com/static/images/google/play/union.png)
  • Network accessline 585
    > ![](https://developer.android.com/static/images/google/play/union.png)
  • Network accessline 585
    > ![](https://developer.android.com/static/images/google/play/union.png)
  • Network accessline 589
    <config:device-targeting-config         xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 589
    <config:device-targeting-config         xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 590
    xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 590
    xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 625
    ![pixel 4a page in the device catalog](https://developer.android.com/static/images/google/play/pixel-4.png)
  • Network accessline 625
    ![pixel 4a page in the device catalog](https://developer.android.com/static/images/google/play/pixel-4.png)
  • Network accessline 627
    ![pixel 4a page in the device catalog](https://developer.android.com/static/images/google/play/pixel-4-2.png)
  • Network accessline 627
    ![pixel 4a page in the device catalog](https://developer.android.com/static/images/google/play/pixel-4-2.png)
  • Network accessline 688
    Once you have downloaded the AI pack, you can check whether your model is present by using the [AssetManager](https://developer.android.com/google/play/on-device-ai#install-time-delivery) for install-time
  • Network accessline 688
    Once you have downloaded the AI pack, you can check whether your model is present by using the [AssetManager](https://developer.android.com/google/play/on-device-ai#install-time-delivery) for install-time
  • Network accessline 689
    present by using the [AssetManager](https://developer.android.com/google/play/on-device-ai#install-time-delivery) for install-time
  • Network accessline 689
    present by using the [AssetManager](https://developer.android.com/google/play/on-device-ai#install-time-delivery) for install-time
  • Network accessline 690
    packs or the [AiPackManager](https://developer.android.com/google/play/on-device-ai#access-AI-packs) for fast-follow and on-demand
  • Network accessline 690
    packs or the [AiPackManager](https://developer.android.com/google/play/on-device-ai#access-AI-packs) for fast-follow and on-demand
  • Network accessline 692
    [sample app](https://developer.android.com/google/play/on-device-ai#example-app).
  • Network accessline 692
    [sample app](https://developer.android.com/google/play/on-device-ai#example-app).
  • Network accessline 724
    > [!NOTE] > **Note:** Devices that are not targeted won't receive the feature module at all. This is different from [targeting for AI packs](https://developer.android.com/google/play/on-device-ai#targeting-for-ai-packs), where devices that 
  • Network accessline 724
    > [!NOTE] > **Note:** Devices that are not targeted won't receive the feature module at all. This is different from [targeting for AI packs](https://developer.android.com/google/play/on-device-ai#targeting-for-ai-packs), where devices that 
  • Network accessline 725
    > **Note:** Devices that are not targeted won't receive the feature module at all. This is different from [targeting for AI packs](https://developer.android.com/google/play/on-device-ai#targeting-for-ai-packs), where devices that are not ta
  • Network accessline 725
    > **Note:** Devices that are not targeted won't receive the feature module at all. This is different from [targeting for AI packs](https://developer.android.com/google/play/on-device-ai#targeting-for-ai-packs), where devices that are not ta
  • Network accessline 738
    Take a look at the [internal app sharing instructions](https://support.google.com/googleplay/android-developer/answer/9844679).
  • Network accessline 738
    Take a look at the [internal app sharing instructions](https://support.google.com/googleplay/android-developer/answer/9844679).
  • Network accessline 739
    [internal app sharing instructions](https://support.google.com/googleplay/android-developer/answer/9844679).
  • Network accessline 739
    [internal app sharing instructions](https://support.google.com/googleplay/android-developer/answer/9844679).
  • Network accessline 743
    Alternatively, you can generate APKs using [`bundletool`](https://developer.android.com/studio/command-line/bundletool) (1.18.0 or above) and sideload
  • Network accessline 743
    Alternatively, you can generate APKs using [`bundletool`](https://developer.android.com/studio/command-line/bundletool) (1.18.0 or above) and sideload
  • Network accessline 744
    [`bundletool`](https://developer.android.com/studio/command-line/bundletool) (1.18.0 or above) and sideload
  • Network accessline 744
    [`bundletool`](https://developer.android.com/studio/command-line/bundletool) (1.18.0 or above) and sideload
  • Network accessline 798
    We recommend that you test your app end to end on Google Play with an [internal test track](https://support.google.com/googleplay/android-developer/answer/9845334).
  • Network accessline 798
    We recommend that you test your app end to end on Google Play with an [internal test track](https://support.google.com/googleplay/android-developer/answer/9845334).
  • Network accessline 799
    [internal test track](https://support.google.com/googleplay/android-developer/answer/9845334).
  • Network accessline 799
    [internal test track](https://support.google.com/googleplay/android-developer/answer/9845334).
  • Network accessline 801
    Once you've done this, you can incrementally release your app update to production with [staged roll-outs](https://support.google.com/googleplay/android-developer/answer/6346149).
  • Network accessline 801
    Once you've done this, you can incrementally release your app update to production with [staged roll-outs](https://support.google.com/googleplay/android-developer/answer/6346149).
  • Network accessline 803
    [staged roll-outs](https://support.google.com/googleplay/android-developer/answer/6346149).
  • Network accessline 803
    [staged roll-outs](https://support.google.com/googleplay/android-developer/answer/6346149).
  • Network accessline 807
    Download the [sample app](https://drive.google.com/drive/folders/1zb2O2mDvEh4vOmv1QbjeLU-O25KHrfKJ).
  • Network accessline 807
    Download the [sample app](https://drive.google.com/drive/folders/1zb2O2mDvEh4vOmv1QbjeLU-O25KHrfKJ).
  • Network accessline 808
    [sample app](https://drive.google.com/drive/folders/1zb2O2mDvEh4vOmv1QbjeLU-O25KHrfKJ).
  • Network accessline 808
    [sample app](https://drive.google.com/drive/folders/1zb2O2mDvEh4vOmv1QbjeLU-O25KHrfKJ).
  • Network accessline 810
    It demonstrates how to use each of the delivery modes as well as the device targeting configuration. See the [local testing](https://developer.android.com/google/play/on-device-ai#local-testing) section to get
  • Network accessline 810
    It demonstrates how to use each of the delivery modes as well as the device targeting configuration. See the [local testing](https://developer.android.com/google/play/on-device-ai#local-testing) section to get
  • Network accessline 811
    targeting configuration. See the [local testing](https://developer.android.com/google/play/on-device-ai#local-testing) section to get
  • Network accessline 811
    targeting configuration. See the [local testing](https://developer.android.com/google/play/on-device-ai#local-testing) section to get
  • Network accessline 816
    Learn more about [Android App Bundles](https://developer.android.com/guide/app-bundle) and read the
  • Network accessline 816
    Learn more about [Android App Bundles](https://developer.android.com/guide/app-bundle) and read the
  • Network accessline 818
    [AI Delivery SDK](https://developer.android.com/reference/com/google/android/play/core/packages-ai_delivery).
  • Network accessline 818
    [AI Delivery SDK](https://developer.android.com/reference/com/google/android/play/core/packages-ai_delivery).

device-ai/litert/litert-lm/references/get-a-model.md

  • Network accessline 22
    The download URL is `https://huggingface.co/<repo>/resolve/main/<file>`. When
  • Network accessline 22
    The download URL is `https://huggingface.co/<repo>/resolve/main/<file>`. When

device-ai/litert/litert-runtime/SKILL.md

  • Network accessline 24
    This skill provides step-by-step guidance for building an Android app that runs a `.tflite` model with the [LiteRT CompiledModel API](https://ai.google.dev/edge/litert/android)
  • Network accessline 24
    This skill provides step-by-step guidance for building an Android app that runs a `.tflite` model with the [LiteRT CompiledModel API](https://ai.google.dev/edge/litert/android)
  • Network accessline 25
    a `.tflite` model with the [LiteRT CompiledModel API](https://ai.google.dev/edge/litert/android)
  • Network accessline 25
    a `.tflite` model with the [LiteRT CompiledModel API](https://ai.google.dev/edge/litert/android)
  • Network accessline 26
    (`com.google.ai.edge.litert:litert` 2.x; [source repository](https://github.com/google-ai-edge/litert/blob/main/README.md)) on the CPU or
  • Network accessline 26
    (`com.google.ai.edge.litert:litert` 2.x; [source repository](https://github.com/google-ai-edge/litert/blob/main/README.md)) on the CPU or
  • Network accessline 34
    - A Kotlin Android project (`minSdk` must be `24` or higher, as declared by the LiteRT 2.3.0 AARs). - The runtime that Step 1 picks: the Google Play services runtime (`com.google.android.gms:play-services-litert`, the default; see [LiteRT i
  • Network accessline 34
    - A Kotlin Android project (`minSdk` must be `24` or higher, as declared by the LiteRT 2.3.0 AARs). - The runtime that Step 1 picks: the Google Play services runtime (`com.google.android.gms:play-services-litert`, the default; see [LiteRT i
  • Network accessline 36
    - A verified `.tflite` model and its input contract (input dimensions, mean, standard deviation, channel order, and tensor layout). For models with a verified recipe, inspect the [LiteRT model recipes](https://github.com/google-ai-edge/lite
  • Network accessline 36
    - A verified `.tflite` model and its input contract (input dimensions, mean, standard deviation, channel order, and tensor layout). For models with a verified recipe, inspect the [LiteRT model recipes](https://github.com/google-ai-edge/lite
  • Network accessline 397
    2. **Capture a golden output first** : While the legacy runtime is still in the project, record the app's output for one fixed input on the CPU. This step needs a device or an emulator. Run the capture test with `am instrument`, not `connec
  • Network accessline 397
    2. **Capture a golden output first** : While the legacy runtime is still in the project, record the app's output for one fixed input on the CPU. This step needs a device or an emulator. Run the capture test with `am instrument`, not `connec
  • Network accessline 398
    3. **Swap the dependencies** : Delete every legacy artifact line (never leave it commented out) and add the dependencies of the runtime that Step 1 picks: by default those of [LiteRT in Google Play services](references/play-services.md), wi
  • Network accessline 398
    3. **Swap the dependencies** : Delete every legacy artifact line (never leave it commented out) and add the dependencies of the runtime that Step 1 picks: by default those of [LiteRT in Google Play services](references/play-services.md), wi
  • Network accessline 399
    services](references/play-services.md) describes. On the bundled runtime, an app keeps them with `com.google.ai.edge.litert:litert-support:2.3.0`, with the package `org.tensorflow.lite.support` renamed to `com.google.ai.edge.litert.support`
  • Network accessline 399
    services](references/play-services.md) describes. On the bundled runtime, an app keeps them with `com.google.ai.edge.litert:litert-support:2.3.0`, with the package `org.tensorflow.lite.support` renamed to `com.google.ai.edge.litert.support`
  • Network accessline 423
    accelerator, which changes the speed and the numerical results of a    quantized model that ran on a DSP or an NPU before; point them to    [NPU acceleration with LiteRT](https://ai.google.dev/edge/litert/next/npu) for the NPU. Tell the use
  • Network accessline 423
    accelerator, which changes the speed and the numerical results of a    quantized model that ran on a DSP or an NPU before; point them to    [NPU acceleration with LiteRT](https://ai.google.dev/edge/litert/next/npu) for the NPU. Tell the use
  • Network accessline 424
    quantized model that ran on a DSP or an NPU before; point them to    [NPU acceleration with LiteRT](https://ai.google.dev/edge/litert/next/npu) for the NPU. Tell the user about the    TensorFlow Lite Task Library, C++ modules, and Select Te
  • Network accessline 424
    quantized model that ran on a DSP or an NPU before; point them to    [NPU acceleration with LiteRT](https://ai.google.dev/edge/litert/next/npu) for the NPU. Tell the user about the    TensorFlow Lite Task Library, C++ modules, and Select Te
  • Network accessline 425
    [NPU acceleration with LiteRT](https://ai.google.dev/edge/litert/next/npu) for the NPU. Tell the user about the
  • Network accessline 425
    [NPU acceleration with LiteRT](https://ai.google.dev/edge/litert/next/npu) for the NPU. Tell the user about the

device-ai/litert/litert-runtime/references/android/google/play/on-device-ai.md

  • Network accessline 3
    Play for On-device AI brings the benefits of [Android App Bundles](https://developer.android.com/guide/app-bundle) and Google Play delivery to custom ML
  • Network accessline 3
    Play for On-device AI brings the benefits of [Android App Bundles](https://developer.android.com/guide/app-bundle) and Google Play delivery to custom ML
  • Network accessline 4
    [Android App Bundles](https://developer.android.com/guide/app-bundle) and Google Play delivery to custom ML
  • Network accessline 4
    [Android App Bundles](https://developer.android.com/guide/app-bundle) and Google Play delivery to custom ML
  • Network accessline 22
    - By using Play for On-device AI you agree to the terms in the [Google Play Developer Distribution Agreement](https://play.google.com/about/developer-distribution-agreement.html) and the [Play Core Software Development Kit Terms of Service]
  • Network accessline 22
    - By using Play for On-device AI you agree to the terms in the [Google Play Developer Distribution Agreement](https://play.google.com/about/developer-distribution-agreement.html) and the [Play Core Software Development Kit Terms of Service]
  • Network accessline 42
    AI packs only contain models. Java/Kotlin and native libraries are not allowed. If you need to ship libraries or code to run your ML model, move it into the base module or a [feature module](https://developer.android.com/guide/playcore/feat
  • Network accessline 42
    AI packs only contain models. Java/Kotlin and native libraries are not allowed. If you need to ship libraries or code to run your ML model, move it into the base module or a [feature module](https://developer.android.com/guide/playcore/feat
  • Network accessline 43
    If you need to ship libraries or code to run your ML model, move it into the base module or a [feature module](https://developer.android.com/guide/playcore/feature-delivery). You can configure your feature module so that it has the same dow
  • Network accessline 43
    If you need to ship libraries or code to run your ML model, move it into the base module or a [feature module](https://developer.android.com/guide/playcore/feature-delivery). You can configure your feature module so that it has the same dow
  • Network accessline 44
    base module or a [feature module](https://developer.android.com/guide/playcore/feature-delivery). You can configure your feature module so that it has the same download and targeting settings as the AI pack.
  • Network accessline 44
    base module or a [feature module](https://developer.android.com/guide/playcore/feature-delivery). You can configure your feature module so that it has the same download and targeting settings as the AI pack.
  • Network accessline 48
    > [!NOTE] > **Note:** AI packs don't contain Java/Kotlin or native libraries. You can ship libraries or code to run your ML models in [feature modules](https://developer.android.com/guide/playcore/feature-delivery).
  • Network accessline 48
    > [!NOTE] > **Note:** AI packs don't contain Java/Kotlin or native libraries. You can ship libraries or code to run your ML models in [feature modules](https://developer.android.com/guide/playcore/feature-delivery).
  • Network accessline 49
    > **Note:** AI packs don't contain Java/Kotlin or native libraries. You can ship libraries or code to run your ML models in [feature modules](https://developer.android.com/guide/playcore/feature-delivery).
  • Network accessline 49
    > **Note:** AI packs don't contain Java/Kotlin or native libraries. You can ship libraries or code to run your ML models in [feature modules](https://developer.android.com/guide/playcore/feature-delivery).
  • Network accessline 53
    You can use LiteRT and MediaPipe with AI packs. Package your model in an AI pack and then access it using the instructions for [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for
  • Network accessline 53
    You can use LiteRT and MediaPipe with AI packs. Package your model in an AI pack and then access it using the instructions for [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for
  • Network accessline 54
    and then access it using the instructions for [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for [fast-follow and on-demand packs](https://developer.android.com/google/play/on-device-ai
  • Network accessline 54
    and then access it using the instructions for [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for [fast-follow and on-demand packs](https://developer.android.com/google/play/on-device-ai
  • Network accessline 55
    [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for
  • Network accessline 55
    [install-time packs](https://developer.android.com/google/play/on-device-ai#install-time-delivery) or for
  • Network accessline 56
    [fast-follow and on-demand packs](https://developer.android.com/google/play/on-device-ai#ff-od-delivery).
  • Network accessline 56
    [fast-follow and on-demand packs](https://developer.android.com/google/play/on-device-ai#ff-od-delivery).
  • Network accessline 60
    - [Getting started with LiteRT](https://ai.google.dev/edge/litert/android)
  • Network accessline 60
    - [Getting started with LiteRT](https://ai.google.dev/edge/litert/android)
  • Network accessline 61
    - The [sample app](https://developer.android.com/google/play/on-device-ai#example-app) shows how you can package a LiteRT model in an AI pack and load it at runtime.
  • Network accessline 61
    - The [sample app](https://developer.android.com/google/play/on-device-ai#example-app) shows how you can package a LiteRT model in an AI pack and load it at runtime.
  • Network accessline 62
    - There are many [pretrained LiteRT models](https://ai.google.dev/edge/litert/models/trained) that you can use in AI packs to get started.
  • Network accessline 62
    - There are many [pretrained LiteRT models](https://ai.google.dev/edge/litert/models/trained) that you can use in AI packs to get started.
  • Network accessline 63
    - [Getting started with MediaPipe](https://ai.google.dev/edge/mediapipe/framework/getting_started/android)
  • Network accessline 63
    - [Getting started with MediaPipe](https://ai.google.dev/edge/mediapipe/framework/getting_started/android)
  • Network accessline 64
    - For fast-follow and on-demand packs, you can use [AssetCache.java](https://github.com/google-ai-edge/mediapipe/blob/master/mediapipe/java/com/google/mediapipe/framework/AssetCache.java) to load your assets (eg. `.binarypb` files) by their
  • Network accessline 64
    - For fast-follow and on-demand packs, you can use [AssetCache.java](https://github.com/google-ai-edge/mediapipe/blob/master/mediapipe/java/com/google/mediapipe/framework/AssetCache.java) to load your assets (eg. `.binarypb` files) by their
  • Network accessline 65
    - For install-time packs, you can use [AndroidAssetUtil.java](https://github.com/google-ai-edge/mediapipe/blob/master/mediapipe/java/com/google/mediapipe/framework/AndroidAssetUtil.java#L56).
  • Network accessline 65
    - For install-time packs, you can use [AndroidAssetUtil.java](https://github.com/google-ai-edge/mediapipe/blob/master/mediapipe/java/com/google/mediapipe/framework/AndroidAssetUtil.java#L56).
  • Network accessline 71
    1. Package your models into AI packs into your Android App Bundle and specify how the AI packs should be delivered. 2. \[Optional\] If you want to deliver different models to different devices, you can [configure device targeting](https://d
  • Network accessline 71
    1. Package your models into AI packs into your Android App Bundle and specify how the AI packs should be delivered. 2. \[Optional\] If you want to deliver different models to different devices, you can [configure device targeting](https://d
  • Network accessline 72
    2. \[Optional\] If you want to deliver different models to different devices, you can [configure device targeting](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) for your AI packs. For example, you co
  • Network accessline 72
    2. \[Optional\] If you want to deliver different models to different devices, you can [configure device targeting](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) for your AI packs. For example, you co
  • Network accessline 130
    7. Add code to load and run your models. How you do this will depend on the    delivery mode of your AI packs. See instructions for    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and
  • Network accessline 130
    7. Add code to load and run your models. How you do this will depend on the    delivery mode of your AI packs. See instructions for    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and
  • Network accessline 131
    delivery mode of your AI packs. See instructions for    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and    [fast-follow/on-demand](https://developer.android.com/google/play/on-device-ai#ff-od
  • Network accessline 131
    delivery mode of your AI packs. See instructions for    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and    [fast-follow/on-demand](https://developer.android.com/google/play/on-device-ai#ff-od
  • Network accessline 132
    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and
  • Network accessline 132
    [install-time](https://developer.android.com/google/play/on-device-ai#install-time-delivery) and
  • Network accessline 133
    [fast-follow/on-demand](https://developer.android.com/google/play/on-device-ai#ff-od-delivery) below.
  • Network accessline 133
    [fast-follow/on-demand](https://developer.android.com/google/play/on-device-ai#ff-od-delivery) below.
  • Network accessline 135
    8. \[Optional\] [Configure device targeting](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration)
  • Network accessline 135
    8. \[Optional\] [Configure device targeting](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration)
  • Network accessline 138
    9. [Build the Android App Bundle with Gradle](https://developer.android.com/studio/build/building-cmdline#build_bundle).
  • Network accessline 138
    9. [Build the Android App Bundle with Gradle](https://developer.android.com/studio/build/building-cmdline#build_bundle).
  • Network accessline 178
    Each AI pack is stored in a separate folder in the app's internal storage. Use the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 178
    Each AI pack is stored in a separate folder in the app's internal storage. Use the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 179
    the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String)) method to determine the root folder of an AI pack. This method returns the
  • Network accessline 179
    the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String)) method to determine the root folder of an AI pack. This method returns the
  • Network accessline 180
    [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 180
    [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 184
    | Return value | Status | |---|---| | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](htt
  • Network accessline 184
    | Return value | Status | |---|---| | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](htt
  • Network accessline 185
    |---|---| | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](https://developer.android.com
  • Network accessline 185
    |---|---| | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](https://developer.android.com
  • Network accessline 186
    | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](https://developer.android.com/reference
  • Network accessline 186
    | A valid [`AiPackLocation`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation) object | AI pack root folder is ready for immediate access at [`assetsPath()`](https://developer.android.com/reference
  • Network accessline 196
    [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates(java.util.List%3Cjava.lang.String%3E)) method to determine the size of the download and whether the pack is already
  • Network accessline 196
    [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates(java.util.List%3Cjava.lang.String%3E)) method to determine the size of the download and whether the pack is already
  • Network accessline 204
    `getPackStates()` is an asynchronous method that returns a `Task<AiPackStates>`. The [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates())
  • Network accessline 204
    `getPackStates()` is an asynchronous method that returns a `Task<AiPackStates>`. The [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates())
  • Network accessline 205
    The [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates()) method of an `AiPackStates` object returns a `Map<String, AiPackState>`. This
  • Network accessline 205
    The [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates()) method of an `AiPackStates` object returns a `Map<String, AiPackState>`. This
  • Network accessline 206
    [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates())
  • Network accessline 206
    [`packStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates#packStates())
  • Network accessline 235
    The following [`AiPackState`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState)
  • Network accessline 235
    The following [`AiPackState`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState)
  • Network accessline 236
    [`AiPackState`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState)
  • Network accessline 236
    [`AiPackState`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState)
  • Network accessline 240
    - [`totalBytesToDownload()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#totalBytesToDownload())
  • Network accessline 240
    - [`totalBytesToDownload()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#totalBytesToDownload())
  • Network accessline 241
    - [`bytesDownloaded()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#bytesDownloaded())
  • Network accessline 241
    - [`bytesDownloaded()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#bytesDownloaded())
  • Network accessline 242
    - [`transferProgressPercentage()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#transferProgressPercentage())
  • Network accessline 242
    - [`transferProgressPercentage()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#transferProgressPercentage())
  • Network accessline 244
    To get the status of an AI pack, use the [`status()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#status())
  • Network accessline 244
    To get the status of an AI pack, use the [`status()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#status())
  • Network accessline 245
    [`status()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#status())
  • Network accessline 245
    [`status()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#status())
  • Network accessline 246
    method, which returns the status as an integer that corresponds to a constant field in the [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus)
  • Network accessline 246
    method, which returns the status as an integer that corresponds to a constant field in the [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus)
  • Network accessline 247
    field in the [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus) class. An AI pack that's not installed yet has the status
  • Network accessline 247
    field in the [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus) class. An AI pack that's not installed yet has the status
  • Network accessline 248
    [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus)
  • Network accessline 248
    [`AiPackStatus`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus)
  • Network accessline 252
    If a request fails, use the [`errorCode()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#errorCode())
  • Network accessline 252
    If a request fails, use the [`errorCode()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#errorCode())
  • Network accessline 253
    [`errorCode()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#errorCode())
  • Network accessline 253
    [`errorCode()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackState#errorCode())
  • Network accessline 254
    method, whose return value corresponds to a constant field in the [`AiPackErrorCode`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackErrorCode) class.
  • Network accessline 254
    method, whose return value corresponds to a constant field in the [`AiPackErrorCode`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackErrorCode) class.
  • Network accessline 255
    [`AiPackErrorCode`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackErrorCode)
  • Network accessline 255
    [`AiPackErrorCode`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackErrorCode)
  • Network accessline 260
    Use the [`fetch()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#fetch(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 260
    Use the [`fetch()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#fetch(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 261
    [`fetch()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#fetch(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 261
    [`fetch()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#fetch(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 266
    Task<AiPackStates> fetch(List<String> packNames)
  • Network accessline 266
    Task<AiPackStates> fetch(List<String> packNames)
  • Network accessline 269
    This method returns an [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) object containing a list of packs and their initial download states and sizes.
  • Network accessline 269
    This method returns an [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) object containing a list of packs and their initial download states and sizes.
  • Network accessline 270
    [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) object containing a list of packs and their initial download states and sizes. If an AI pack requested via `fetch()` is already down
  • Network accessline 270
    [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) object containing a list of packs and their initial download states and sizes. If an AI pack requested via `fetch()` is already down
  • Network accessline 271
    object containing a list of packs and their initial download states and sizes. If an AI pack requested via `fetch()` is already downloading, the download status is returned and no additional download is started.
  • Network accessline 271
    object containing a list of packs and their initial download states and sizes. If an AI pack requested via `fetch()` is already downloading, the download status is returned and no additional download is started.
  • Network accessline 272
    If an AI pack requested via `fetch()` is already downloading, the download
  • Network accessline 272
    If an AI pack requested via `fetch()` is already downloading, the download
  • Network accessline 280
    You should implement an [`AiPackStateUpdateListener`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStateUpdateListener)
  • Network accessline 280
    You should implement an [`AiPackStateUpdateListener`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStateUpdateListener)
  • Network accessline 281
    [`AiPackStateUpdateListener`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStateUpdateListener)
  • Network accessline 281
    [`AiPackStateUpdateListener`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStateUpdateListener)
  • Network accessline 292
    > [!NOTE] > **Note:** The Play Store automatically triggers the download of any `fast-follow` packs after the user installs or updates the app. However, these packs may not be ready to use immediately. You must check the status of the `fast
  • Network accessline 292
    > [!NOTE] > **Note:** The Play Store automatically triggers the download of any `fast-follow` packs after the user installs or updates the app. However, these packs may not be ready to use immediately. You must check the status of the `fast
  • Network accessline 293
    > **Note:** The Play Store automatically triggers the download of any `fast-follow` packs after the user installs or updates the app. However, these packs may not be ready to use immediately. You must check the status of the `fast-follow` p
  • Network accessline 293
    > **Note:** The Play Store automatically triggers the download of any `fast-follow` packs after the user installs or updates the app. However, these packs may not be ready to use immediately. You must check the status of the `fast-follow` p
  • Network accessline 302
    `WAITING_FOR_WIFI`. To trigger the UI flow to prompt the user for consent, use the [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activ
  • Network accessline 302
    `WAITING_FOR_WIFI`. To trigger the UI flow to prompt the user for consent, use the [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activ
  • Network accessline 303
    the [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderReques
  • Network accessline 303
    the [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderReques
  • Network accessline 304
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 304
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 312
    If a pack has the `REQUIRES_USER_CONFIRMATION` status, the download won't proceed until the user accepts the dialog that is shown with [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks
  • Network accessline 312
    If a pack has the `REQUIRES_USER_CONFIRMATION` status, the download won't proceed until the user accepts the dialog that is shown with [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks
  • Network accessline 313
    proceed until the user accepts the dialog that is shown with [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityRes
  • Network accessline 313
    proceed until the user accepts the dialog that is shown with [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityRes
  • Network accessline 314
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 314
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 315
    This status can occur when the app is not recognized by Play---for example, if the app was sideloaded. Note that calling [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager
  • Network accessline 315
    This status can occur when the app is not recognized by Play---for example, if the app was sideloaded. Note that calling [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager
  • Network accessline 316
    app was sideloaded. Note that calling [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.
  • Network accessline 316
    app was sideloaded. Note that calling [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.
  • Network accessline 317
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 317
    [`showConfirmationDialog()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#showConfirmationDialog(androidx.activity.result.ActivityResultLauncher%3Candroidx.activity.result.IntentSenderRequest%3E
  • Network accessline 391
    Alternatively, you can use the [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates())
  • Network accessline 391
    Alternatively, you can use the [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates())
  • Network accessline 392
    [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates())
  • Network accessline 392
    [`getPackStates()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackStates())
  • Network accessline 393
    method to get the status of current downloads. [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) contains the download progress, download status, and any failure error codes.
  • Network accessline 393
    method to get the status of current downloads. [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates) contains the download progress, download status, and any failure error codes.
  • Network accessline 394
    [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates)
  • Network accessline 394
    [`AiPackStates`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackStates)
  • Network accessline 399
    You can access an AI pack using file system calls after the download request reaches the [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed())
  • Network accessline 399
    You can access an AI pack using file system calls after the download request reaches the [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed())
  • Network accessline 400
    reaches the [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed()) state. Use the
  • Network accessline 400
    reaches the [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed()) state. Use the
  • Network accessline 401
    [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed())
  • Network accessline 401
    [`COMPLETED`](https://developer.android.com/reference/com/google/android/play/core/aipacks/model/AiPackStatus#completed())
  • Network accessline 402
    state. Use the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String)) method to get the root folder of the AI pack.
  • Network accessline 402
    state. Use the [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String)) method to get the root folder of the AI pack.
  • Network accessline 403
    [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 403
    [`getPackLocation()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocation(java.lang.String))
  • Network accessline 406
    AI packs are stored in the `assets` directory within the AI pack root directory. You can get the path to the `assets` directory by using the convenience method [`assetsPath()`](https://developer.android.com/reference/com/google/android/play
  • Network accessline 406
    AI packs are stored in the `assets` directory within the AI pack root directory. You can get the path to the `assets` directory by using the convenience method [`assetsPath()`](https://developer.android.com/reference/com/google/android/play
  • Network accessline 407
    You can get the path to the `assets` directory by using the convenience method [`assetsPath()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation#assetsPath()). Use the following method to get the p
  • Network accessline 407
    You can get the path to the `assets` directory by using the convenience method [`assetsPath()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation#assetsPath()). Use the following method to get the p
  • Network accessline 408
    [`assetsPath()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation#assetsPath()).
  • Network accessline 408
    [`assetsPath()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackLocation#assetsPath()).
  • Network accessline 429
    You can follow the [device targeting instructions](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) to specify
  • Network accessline 429
    You can follow the [device targeting instructions](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) to specify
  • Network accessline 430
    [device targeting instructions](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) to specify
  • Network accessline 430
    [device targeting instructions](https://developer.android.com/google/play/on-device-ai#device-targeting-configuration) to specify
  • Network accessline 439
    Use [`cancel()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#cancel(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 439
    Use [`cancel()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#cancel(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 440
    [`cancel()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#cancel(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 440
    [`cancel()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#cancel(java.util.List%3Cjava.lang.String%3E))
  • Network accessline 446
    Use [`removePack()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#removePack(java.lang.String))
  • Network accessline 446
    Use [`removePack()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#removePack(java.lang.String))
  • Network accessline 447
    [`removePack()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#removePack(java.lang.String))
  • Network accessline 447
    [`removePack()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#removePack(java.lang.String))
  • Network accessline 452
    Use [`getPackLocations()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocations())
  • Network accessline 452
    Use [`getPackLocations()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocations())
  • Network accessline 453
    [`getPackLocations()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocations())
  • Network accessline 453
    [`getPackLocations()`](https://developer.android.com/reference/com/google/android/play/core/aipacks/AiPackManager#getPackLocations())
  • Network accessline 468
    - Device model - Device RAM - [System features](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 468
    - Device model - Device RAM - [System features](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 470
    - [System features](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 470
    - [System features](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 483
    To use device targeting, ensure that your Android Gradle Plugin (AGP) version is at least 8.10.0. This is packaged with Android Studio (Meerkat 2 and later). Download the latest [stable version of Android Studio](https://developer.android.c
  • Network accessline 483
    To use device targeting, ensure that your Android Gradle Plugin (AGP) version is at least 8.10.0. This is packaged with Android Studio (Meerkat 2 and later). Download the latest [stable version of Android Studio](https://developer.android.c
  • Network accessline 485
    Download the latest [stable version of Android Studio](https://developer.android.com/studio).
  • Network accessline 485
    Download the latest [stable version of Android Studio](https://developer.android.com/studio).
  • Network accessline 499
    <config:device-targeting-config         xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 499
    <config:device-targeting-config         xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 500
    xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 500
    xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 538
    System   [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 538
    System   [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 539
    [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 539
    [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 546
    System   [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 546
    System   [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 547
    [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 547
    [feature reference](https://developer.android.com/guide/topics/manifest/uses-feature-element#features-reference)
  • Network accessline 552
    - **manufacturer** : [System on chip manufacturer](https://developer.android.com/reference/android/os/Build#SOC_MANUFACTURER)
  • Network accessline 552
    - **manufacturer** : [System on chip manufacturer](https://developer.android.com/reference/android/os/Build#SOC_MANUFACTURER)
  • Network accessline 553
    - **model** : [System on chip model](https://developer.android.com/reference/android/os/Build#SOC_MODEL)
  • Network accessline 553
    - **model** : [System on chip model](https://developer.android.com/reference/android/os/Build#SOC_MODEL)
  • Network accessline 567
    > is a Pixel 4 - also written as follows: > > ![](https://developer.android.com/static/images/google/play/intersect.png)
  • Network accessline 567
    > is a Pixel 4 - also written as follows: > > ![](https://developer.android.com/static/images/google/play/intersect.png)
  • Network accessline 568
    > > ![](https://developer.android.com/static/images/google/play/intersect.png) >
  • Network accessline 568
    > > ![](https://developer.android.com/static/images/google/play/intersect.png) >
  • Network accessline 569
    > ![](https://developer.android.com/static/images/google/play/intersect.png)
  • Network accessline 569
    > ![](https://developer.android.com/static/images/google/play/intersect.png)
  • Network accessline 583
    > it is a Pixel 4 - also written as follows: > > ![](https://developer.android.com/static/images/google/play/union.png)
  • Network accessline 583
    > it is a Pixel 4 - also written as follows: > > ![](https://developer.android.com/static/images/google/play/union.png)
  • Network accessline 585
    > ![](https://developer.android.com/static/images/google/play/union.png)
  • Network accessline 585
    > ![](https://developer.android.com/static/images/google/play/union.png)
  • Network accessline 589
    <config:device-targeting-config         xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 589
    <config:device-targeting-config         xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 590
    xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 590
    xmlns:config="http://schemas.android.com/apk/config">
  • Network accessline 625
    ![pixel 4a page in the device catalog](https://developer.android.com/static/images/google/play/pixel-4.png)
  • Network accessline 625
    ![pixel 4a page in the device catalog](https://developer.android.com/static/images/google/play/pixel-4.png)
  • Network accessline 627
    ![pixel 4a page in the device catalog](https://developer.android.com/static/images/google/play/pixel-4-2.png)
  • Network accessline 627
    ![pixel 4a page in the device catalog](https://developer.android.com/static/images/google/play/pixel-4-2.png)
  • Network accessline 688
    Once you have downloaded the AI pack, you can check whether your model is present by using the [AssetManager](https://developer.android.com/google/play/on-device-ai#install-time-delivery) for install-time
  • Network accessline 688
    Once you have downloaded the AI pack, you can check whether your model is present by using the [AssetManager](https://developer.android.com/google/play/on-device-ai#install-time-delivery) for install-time
  • Network accessline 689
    present by using the [AssetManager](https://developer.android.com/google/play/on-device-ai#install-time-delivery) for install-time
  • Network accessline 689
    present by using the [AssetManager](https://developer.android.com/google/play/on-device-ai#install-time-delivery) for install-time
  • Network accessline 690
    packs or the [AiPackManager](https://developer.android.com/google/play/on-device-ai#access-AI-packs) for fast-follow and on-demand
  • Network accessline 690
    packs or the [AiPackManager](https://developer.android.com/google/play/on-device-ai#access-AI-packs) for fast-follow and on-demand
  • Network accessline 692
    [sample app](https://developer.android.com/google/play/on-device-ai#example-app).
  • Network accessline 692
    [sample app](https://developer.android.com/google/play/on-device-ai#example-app).
  • Network accessline 724
    > [!NOTE] > **Note:** Devices that are not targeted won't receive the feature module at all. This is different from [targeting for AI packs](https://developer.android.com/google/play/on-device-ai#targeting-for-ai-packs), where devices that 
  • Network accessline 724
    > [!NOTE] > **Note:** Devices that are not targeted won't receive the feature module at all. This is different from [targeting for AI packs](https://developer.android.com/google/play/on-device-ai#targeting-for-ai-packs), where devices that 
  • Network accessline 725
    > **Note:** Devices that are not targeted won't receive the feature module at all. This is different from [targeting for AI packs](https://developer.android.com/google/play/on-device-ai#targeting-for-ai-packs), where devices that are not ta
  • Network accessline 725
    > **Note:** Devices that are not targeted won't receive the feature module at all. This is different from [targeting for AI packs](https://developer.android.com/google/play/on-device-ai#targeting-for-ai-packs), where devices that are not ta
  • Network accessline 738
    Take a look at the [internal app sharing instructions](https://support.google.com/googleplay/android-developer/answer/9844679).
  • Network accessline 738
    Take a look at the [internal app sharing instructions](https://support.google.com/googleplay/android-developer/answer/9844679).
  • Network accessline 739
    [internal app sharing instructions](https://support.google.com/googleplay/android-developer/answer/9844679).
  • Network accessline 739
    [internal app sharing instructions](https://support.google.com/googleplay/android-developer/answer/9844679).
  • Network accessline 743
    Alternatively, you can generate APKs using [`bundletool`](https://developer.android.com/studio/command-line/bundletool) (1.18.0 or above) and sideload
  • Network accessline 743
    Alternatively, you can generate APKs using [`bundletool`](https://developer.android.com/studio/command-line/bundletool) (1.18.0 or above) and sideload
  • Network accessline 744
    [`bundletool`](https://developer.android.com/studio/command-line/bundletool) (1.18.0 or above) and sideload
  • Network accessline 744
    [`bundletool`](https://developer.android.com/studio/command-line/bundletool) (1.18.0 or above) and sideload
  • Network accessline 798
    We recommend that you test your app end to end on Google Play with an [internal test track](https://support.google.com/googleplay/android-developer/answer/9845334).
  • Network accessline 798
    We recommend that you test your app end to end on Google Play with an [internal test track](https://support.google.com/googleplay/android-developer/answer/9845334).
  • Network accessline 799
    [internal test track](https://support.google.com/googleplay/android-developer/answer/9845334).
  • Network accessline 799
    [internal test track](https://support.google.com/googleplay/android-developer/answer/9845334).
  • Network accessline 801
    Once you've done this, you can incrementally release your app update to production with [staged roll-outs](https://support.google.com/googleplay/android-developer/answer/6346149).
  • Network accessline 801
    Once you've done this, you can incrementally release your app update to production with [staged roll-outs](https://support.google.com/googleplay/android-developer/answer/6346149).
  • Network accessline 803
    [staged roll-outs](https://support.google.com/googleplay/android-developer/answer/6346149).
  • Network accessline 803
    [staged roll-outs](https://support.google.com/googleplay/android-developer/answer/6346149).
  • Network accessline 807
    Download the [sample app](https://drive.google.com/drive/folders/1zb2O2mDvEh4vOmv1QbjeLU-O25KHrfKJ).
  • Network accessline 807
    Download the [sample app](https://drive.google.com/drive/folders/1zb2O2mDvEh4vOmv1QbjeLU-O25KHrfKJ).
  • Network accessline 808
    [sample app](https://drive.google.com/drive/folders/1zb2O2mDvEh4vOmv1QbjeLU-O25KHrfKJ).
  • Network accessline 808
    [sample app](https://drive.google.com/drive/folders/1zb2O2mDvEh4vOmv1QbjeLU-O25KHrfKJ).
  • Network accessline 810
    It demonstrates how to use each of the delivery modes as well as the device targeting configuration. See the [local testing](https://developer.android.com/google/play/on-device-ai#local-testing) section to get
  • Network accessline 810
    It demonstrates how to use each of the delivery modes as well as the device targeting configuration. See the [local testing](https://developer.android.com/google/play/on-device-ai#local-testing) section to get
  • Network accessline 811
    targeting configuration. See the [local testing](https://developer.android.com/google/play/on-device-ai#local-testing) section to get
  • Network accessline 811
    targeting configuration. See the [local testing](https://developer.android.com/google/play/on-device-ai#local-testing) section to get
  • Network accessline 816
    Learn more about [Android App Bundles](https://developer.android.com/guide/app-bundle) and read the
  • Network accessline 816
    Learn more about [Android App Bundles](https://developer.android.com/guide/app-bundle) and read the
  • Network accessline 818
    [AI Delivery SDK](https://developer.android.com/reference/com/google/android/play/core/packages-ai_delivery).
  • Network accessline 818
    [AI Delivery SDK](https://developer.android.com/reference/com/google/android/play/core/packages-ai_delivery).

device-ai/litert/litert-runtime/references/migration.md

  • Network accessline 27
    When the app depends on the Interpreter API in Google Play services (`com.google.android.gms:play-services-tflite-java`, `-gpu`, or `-support`, with `TfLite.initialize` in the code), follow [LiteRT in Google Play services](https://developer
  • Network accessline 27
    When the app depends on the Interpreter API in Google Play services (`com.google.android.gms:play-services-tflite-java`, `-gpu`, or `-support`, with `TfLite.initialize` in the code), follow [LiteRT in Google Play services](https://developer
  • Network accessline 28
    (`com.google.android.gms:play-services-tflite-java`, `-gpu`, or `-support`, with `TfLite.initialize` in the code), follow [LiteRT in Google Play services](https://developer.android.com/agents/skills/device-ai/litert/litert-runtime/reference
  • Network accessline 28
    (`com.google.android.gms:play-services-tflite-java`, `-gpu`, or `-support`, with `TfLite.initialize` in the code), follow [LiteRT in Google Play services](https://developer.android.com/agents/skills/device-ai/litert/litert-runtime/reference
  • Network accessline 29
    `TfLite.initialize` in the code), follow [LiteRT in Google Play services](https://developer.android.com/agents/skills/device-ai/litert/litert-runtime/references/play-services)
  • Network accessline 29
    `TfLite.initialize` in the code), follow [LiteRT in Google Play services](https://developer.android.com/agents/skills/device-ai/litert/litert-runtime/references/play-services)
  • Network accessline 101
    - **Google Play services runtime (default)** : You must read [LiteRT in Google Play services](https://developer.android.com/agents/skills/device-ai/litert/litert-runtime/references/play-services) before you edit the build file. Add `com.goo
  • Network accessline 101
    - **Google Play services runtime (default)** : You must read [LiteRT in Google Play services](https://developer.android.com/agents/skills/device-ai/litert/litert-runtime/references/play-services) before you edit the build file. Add `com.goo
  • Network accessline 111
    library ships as LiteRT Support, with the same classes and behavior. When the app uses `ImageProcessor`, `TensorImage`, `TensorLabel`, or `MetadataExtractor`, you must read the [LiteRT Support migration guide](https://github.com/google-ai-e
  • Network accessline 111
    library ships as LiteRT Support, with the same classes and behavior. When the app uses `ImageProcessor`, `TensorImage`, `TensorLabel`, or `MetadataExtractor`, you must read the [LiteRT Support migration guide](https://github.com/google-ai-e
  • Network accessline 112
    app uses `ImageProcessor`, `TensorImage`, `TensorLabel`, or `MetadataExtractor`, you must read the [LiteRT Support migration guide](https://github.com/google-ai-edge/LiteRT/blob/main/litert/support_lib/MIGRATION_GUIDE.md) before swapping th
  • Network accessline 112
    app uses `ImageProcessor`, `TensorImage`, `TensorLabel`, or `MetadataExtractor`, you must read the [LiteRT Support migration guide](https://github.com/google-ai-edge/LiteRT/blob/main/litert/support_lib/MIGRATION_GUIDE.md) before swapping th
  • Network accessline 113
    you must read the [LiteRT Support migration guide](https://github.com/google-ai-edge/LiteRT/blob/main/litert/support_lib/MIGRATION_GUIDE.md) before swapping the
  • Network accessline 113
    you must read the [LiteRT Support migration guide](https://github.com/google-ai-edge/LiteRT/blob/main/litert/support_lib/MIGRATION_GUIDE.md) before swapping the
  • Network accessline 147
    - **GPU delegate** (`GpuDelegate`, `GpuDelegateFactory`): Create the GPU option of the Step 2 helper with the CPU as a second accelerator. `CompatibilityList` has no counterpart; the CPU fallback of Step 3 covers a device whose GPU can't ru
  • Network accessline 147
    - **GPU delegate** (`GpuDelegate`, `GpuDelegateFactory`): Create the GPU option of the Step 2 helper with the CPU as a second accelerator. `CompatibilityList` has no counterpart; the CPU fallback of Step 3 covers a device whose GPU can't ru
  • Network accessline 148
    - **NNAPI** (`NnApiDelegate`, `setUseNNAPI(true)`): NNAPI is deprecated from Android 15, and the `CompiledModel` API has no NNAPI accelerator. Remove the delegate, and map an NNAPI choice in the app to the GPU option. You must tell the user
  • Network accessline 148
    - **NNAPI** (`NnApiDelegate`, `setUseNNAPI(true)`): NNAPI is deprecated from Android 15, and the `CompiledModel` API has no NNAPI accelerator. Remove the delegate, and map an NNAPI choice in the app to the GPU option. You must tell the user
  • Network accessline 282
    `Android.mk`, or `.cpp` files that link `tensorflowlite_jni`, tell the user that the C++ module moves to the LiteRT C++ SDK, and point them to [Use prebuilt C++ library from LiteRT Maven](https://ai.google.dev/edge/litert/next/android_cpp_s
  • Network accessline 282
    `Android.mk`, or `.cpp` files that link `tensorflowlite_jni`, tell the user that the C++ module moves to the LiteRT C++ SDK, and point them to [Use prebuilt C++ library from LiteRT Maven](https://ai.google.dev/edge/litert/next/android_cpp_s
  • Network accessline 284
    [Use prebuilt C++ library from LiteRT Maven](https://ai.google.dev/edge/litert/next/android_cpp_sdk).
  • Network accessline 284
    [Use prebuilt C++ library from LiteRT Maven](https://ai.google.dev/edge/litert/next/android_cpp_sdk).

device-ai/litert/litert-runtime/references/play-services.md

  • Network accessline 10
    When the user asks about Terms of Service, data use, or APIs, see [LiteRT in Google Play services](https://developers.google.com/edge/litert/android/play_services).
  • Network accessline 10
    When the user asks about Terms of Service, data use, or APIs, see [LiteRT in Google Play services](https://developers.google.com/edge/litert/android/play_services).
  • Network accessline 11
    [LiteRT in Google Play services](https://developers.google.com/edge/litert/android/play_services).
  • Network accessline 11
    [LiteRT in Google Play services](https://developers.google.com/edge/litert/android/play_services).

device-ai/ml-kit-genai-prompt-api/SKILL.md

  • Network accessline 32
    To optimize prompts for use with the ML Kit Prompt API, follow the [prompt optimization guide](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prompt-optimization).
  • Network accessline 32
    To optimize prompts for use with the ML Kit Prompt API, follow the [prompt optimization guide](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prompt-optimization).
  • Network accessline 33
    [prompt optimization guide](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prompt-optimization).
  • Network accessline 33
    [prompt optimization guide](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prompt-optimization).
  • Network accessline 37
    If the prompt is more than 200 words, implement the [prefix caching API](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prefix-caching).
  • Network accessline 37
    If the prompt is more than 200 words, implement the [prefix caching API](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prefix-caching).
  • Network accessline 41
    - The model must be fully downloaded and available before calling the first inference. Follow the guide on [implementing a generative model](https://developer.android.com/agents/skills/device-ai/prompt-api/references/get-started) to check t
  • Network accessline 41
    - The model must be fully downloaded and available before calling the first inference. Follow the guide on [implementing a generative model](https://developer.android.com/agents/skills/device-ai/prompt-api/references/get-started) to check t
  • Network accessline 61
    1. **Check for API availability:** Verify Structured Output feature is available on the device with `isStructuredOutputFeatureAvailable()` before using it. Refer to the [Structured Output API guide](https://developer.android.com/agents/skil
  • Network accessline 61
    1. **Check for API availability:** Verify Structured Output feature is available on the device with `isStructuredOutputFeatureAvailable()` before using it. Refer to the [Structured Output API guide](https://developer.android.com/agents/skil

device-ai/ml-kit-genai-prompt-api/references/get-started.md

  • Network accessline 7
    For more details about the Prompt API, see the reference documentation for Kotlin ([com.google.mlkit.genai.prompt](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary)) and
  • Network accessline 7
    For more details about the Prompt API, see the reference documentation for Kotlin ([com.google.mlkit.genai.prompt](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary)) and
  • Network accessline 8
    reference documentation for Kotlin ([com.google.mlkit.genai.prompt](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary)) and
  • Network accessline 8
    reference documentation for Kotlin ([com.google.mlkit.genai.prompt](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/package-summary)) and
  • Network accessline 9
    Java ([com.google.mlkit.genai.prompt.java](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/java/package-summary),
  • Network accessline 9
    Java ([com.google.mlkit.genai.prompt.java](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/java/package-summary),
  • Network accessline 10
    [com.google.mlkit.genai.prompt](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/package-summary)).
  • Network accessline 10
    [com.google.mlkit.genai.prompt](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/package-summary)).
  • Network accessline 21
    If you need your responses in a certain format using the Structured Output API, you need to configure KSP and add additional dependencies. For details, see [Generate structured output](https://developer.android.com/agents/skills/device-ai/p
  • Network accessline 21
    If you need your responses in a certain format using the Structured Output API, you need to configure KSP and add additional dependencies. For details, see [Generate structured output](https://developer.android.com/agents/skills/device-ai/p
  • Network accessline 23
    [Generate structured output](https://developer.android.com/agents/skills/device-ai/prompt-api/references/structured-output).
  • Network accessline 23
    [Generate structured output](https://developer.android.com/agents/skills/device-ai/prompt-api/references/structured-output).
  • Network accessline 169
    For more information about the optional parameters, see [Optional configurations](https://developer.android.com/agents/skills/device-ai/ml-kit-genai-prompt-api/references/get-started#optional-configurations).
  • Network accessline 169
    For more information about the optional parameters, see [Optional configurations](https://developer.android.com/agents/skills/device-ai/ml-kit-genai-prompt-api/references/get-started#optional-configurations).
  • Network accessline 170
    configurations](https://developer.android.com/agents/skills/device-ai/ml-kit-genai-prompt-api/references/get-started#optional-configurations).
  • Network accessline 170
    configurations](https://developer.android.com/agents/skills/device-ai/ml-kit-genai-prompt-api/references/get-started#optional-configurations).
  • Network accessline 244
    For more information about streaming and non-streaming inference, see [Streaming versus non-streaming](https://developer.android.com/ml-kit/genai#streaming-vs-non).
  • Network accessline 244
    For more information about streaming and non-streaming inference, see [Streaming versus non-streaming](https://developer.android.com/ml-kit/genai#streaming-vs-non).
  • Network accessline 245
    versus non-streaming](https://developer.android.com/ml-kit/genai#streaming-vs-non).
  • Network accessline 245
    versus non-streaming](https://developer.android.com/ml-kit/genai#streaming-vs-non).
  • Network accessline 264
    For more guidance on setting optional configurations, see [`GenerateContentRequest`](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest).
  • Network accessline 264
    For more guidance on setting optional configurations, see [`GenerateContentRequest`](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest).
  • Network accessline 265
    [`GenerateContentRequest`](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest).
  • Network accessline 265
    [`GenerateContentRequest`](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerateContentRequest).
  • Network accessline 269
    - Input must be under 4000 tokens (or approximately 3000 English words). For more information, see the [`countTokens`](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/GenerativeModel#countTokens(com.google.mlki
  • Network accessline 269
    - Input must be under 4000 tokens (or approximately 3000 English words). For more information, see the [`countTokens`](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/GenerativeModel#countTokens(com.google.mlki
  • Network accessline 270
    - Use cases that require long output (more than 4K tokens) should be avoided. - AICore enforces an inference quota per app. For more information, see [Quota   per application](https://developer.android.com/ml-kit/genai#quota-per).
  • Network accessline 270
    - Use cases that require long output (more than 4K tokens) should be avoided. - AICore enforces an inference quota per app. For more information, see [Quota   per application](https://developer.android.com/ml-kit/genai#quota-per).
  • Network accessline 272
    per application](https://developer.android.com/ml-kit/genai#quota-per).
  • Network accessline 272
    per application](https://developer.android.com/ml-kit/genai#quota-per).

device-ai/ml-kit-genai-prompt-api/references/prefix-caching.md

  • Network accessline 14
    - [Implicit (automatic) prefix caching](https://developer.android.com/agents/skills/device-ai/ml-kit-genai-prompt-api/references/prefix-caching#implicit) is a lightweight approach where the application only needs to define a shared portion 
  • Network accessline 14
    - [Implicit (automatic) prefix caching](https://developer.android.com/agents/skills/device-ai/ml-kit-genai-prompt-api/references/prefix-caching#implicit) is a lightweight approach where the application only needs to define a shared portion 
  • Network accessline 15
    - [Explicit (manual) prefix caching](https://developer.android.com/agents/skills/device-ai/ml-kit-genai-prompt-api/references/prefix-caching#explicit) allows applications to have more control over caches, including cache creation, querying,
  • Network accessline 15
    - [Explicit (manual) prefix caching](https://developer.android.com/agents/skills/device-ai/ml-kit-genai-prompt-api/references/prefix-caching#explicit) allows applications to have more control over caches, including cache creation, querying,
  • Network accessline 62
    - Prompt cache sizes are dependent on the length of the prefix. - To clear all caches created from prefix caching, use the   [`generativeMode.clearImplicitCaches()`](https://developer.android.com/android/reference/kotlin/com/google/mlkit/ge
  • Network accessline 62
    - Prompt cache sizes are dependent on the length of the prefix. - To clear all caches created from prefix caching, use the   [`generativeMode.clearImplicitCaches()`](https://developer.android.com/android/reference/kotlin/com/google/mlkit/ge
  • Network accessline 64
    [`generativeMode.clearImplicitCaches()`](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerativeModel#clearCaches%28%29) method.
  • Network accessline 64
    [`generativeMode.clearImplicitCaches()`](https://developer.android.com/android/reference/kotlin/com/google/mlkit/genai/prompt/GenerativeModel#clearCaches%28%29) method.

device-ai/ml-kit-genai-prompt-api/references/prompt-design.md

  • Network accessline 5
    For more general prompt engineering guidance, see [Prompt Engineering whitepaper](https://www.kaggle.com/whitepaper-prompt-engineering), [Prompt Engineering for Generative
  • Network accessline 5
    For more general prompt engineering guidance, see [Prompt Engineering whitepaper](https://www.kaggle.com/whitepaper-prompt-engineering), [Prompt Engineering for Generative
  • Network accessline 6
    whitepaper](https://www.kaggle.com/whitepaper-prompt-engineering), [Prompt Engineering for Generative
  • Network accessline 6
    whitepaper](https://www.kaggle.com/whitepaper-prompt-engineering), [Prompt Engineering for Generative
  • Network accessline 7
    AI](https://developer.android.com/machine-learning/resources/prompt-eng), and [Prompt design strategies](https://ai.google.dev/gemini-api/docs/prompting-strategies).
  • Network accessline 7
    AI](https://developer.android.com/machine-learning/resources/prompt-eng), and [Prompt design strategies](https://ai.google.dev/gemini-api/docs/prompting-strategies).
  • Network accessline 9
    Alternatively, to automatically refine and improve prompts, you can use the [zero-shot optimizer](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/zero-shot-optimizer#optimizing_for_smaller_models), which can target 
  • Network accessline 9
    Alternatively, to automatically refine and improve prompts, you can use the [zero-shot optimizer](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/zero-shot-optimizer#optimizing_for_smaller_models), which can target 
  • Network accessline 10
    [zero-shot optimizer](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/zero-shot-optimizer#optimizing_for_smaller_models), which can target on-device models such as
  • Network accessline 10
    [zero-shot optimizer](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/zero-shot-optimizer#optimizing_for_smaller_models), which can target on-device models such as
  • Network accessline 20
    Consider using the [prefix caching](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prefix-caching) feature when you use in-context
  • Network accessline 20
    Consider using the [prefix caching](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prefix-caching) feature when you use in-context
  • Network accessline 24
    suboptimal results. Keep your prompt focused and to-the-point. If you need to   repeat a short directive that guides the model's behavior, consider using   [system instructions](https://developer.android.com/agents/skills/device-ai/prompt-a
  • Network accessline 24
    suboptimal results. Keep your prompt focused and to-the-point. If you need to   repeat a short directive that guides the model's behavior, consider using   [system instructions](https://developer.android.com/agents/skills/device-ai/prompt-a
  • Network accessline 26
    [system instructions](https://developer.android.com/agents/skills/device-ai/prompt-api/references/system-instructions).
  • Network accessline 26
    [system instructions](https://developer.android.com/agents/skills/device-ai/prompt-api/references/system-instructions).
  • Network accessline 28
    - **Structure prompts** to generate more effective responses, such as this   [sample prompt template](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/prompt-design-strategies#sample-prompt-template) that clearly defines 
  • Network accessline 28
    - **Structure prompts** to generate more effective responses, such as this   [sample prompt template](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/prompt-design-strategies#sample-prompt-template) that clearly defines 
  • Network accessline 29
    [sample prompt template](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/prompt-design-strategies#sample-prompt-template) that clearly defines instructions,
  • Network accessline 29
    [sample prompt template](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/prompts/prompt-design-strategies#sample-prompt-template) that clearly defines instructions,
  • Network accessline 34
    output for your use case and do manual post-processing to structure the output   in the chosen format. To help ensure that the response output is in your   preferred format, use the [Structured Output API](https://developer.android.com/agen
  • Network accessline 34
    output for your use case and do manual post-processing to structure the output   in the chosen format. To help ensure that the response output is in your   preferred format, use the [Structured Output API](https://developer.android.com/agen
  • Network accessline 36
    preferred format, use the [Structured Output API](https://developer.android.com/agents/skills/device-ai/prompt-api/references/structured-output).
  • Network accessline 36
    preferred format, use the [Structured Output API](https://developer.android.com/agents/skills/device-ai/prompt-api/references/structured-output).
  • Network accessline 48
    handle a more focused task, while using code to chain multiple calls together.   If you do need to tackle a complex, reasoning-intensive task all at once,   consider using [thinking mode](https://developer.android.com/ml-kit/genai/prompt/an
  • Network accessline 48
    handle a more focused task, while using code to chain multiple calls together.   If you do need to tackle a complex, reasoning-intensive task all at once,   consider using [thinking mode](https://developer.android.com/ml-kit/genai/prompt/an
  • Network accessline 50
    consider using [thinking mode](https://developer.android.com/ml-kit/genai/prompt/android/thinking-mode).
  • Network accessline 50
    consider using [thinking mode](https://developer.android.com/ml-kit/genai/prompt/android/thinking-mode).

device-ai/ml-kit-genai-prompt-api/references/prompt-optimization.md

  • Network accessline 6
    The best practices for prompt design for Prompt API are at [Prompt Design](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prompt-design). Apply these core rules:
  • Network accessline 6
    The best practices for prompt design for Prompt API are at [Prompt Design](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prompt-design). Apply these core rules:
  • Network accessline 7
    [Prompt Design](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prompt-design). Apply these core rules:
  • Network accessline 7
    [Prompt Design](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prompt-design). Apply these core rules:
  • Network accessline 10
    - Make prompts concise. Remove duplicate or repeated instructions. Do not include conversational filler such as: hello, please, do this, help me with, etc. For example, a verbose prompt such as: "Hello! I want you to act as an expert transl
  • Network accessline 10
    - Make prompts concise. Remove duplicate or repeated instructions. Do not include conversational filler such as: hello, please, do this, help me with, etc. For example, a verbose prompt such as: "Hello! I want you to act as an expert transl
  • Network accessline 11
    - Use paired XML/HTML delimiters to denote dynamic inputs (for example `<email>[content]</email>`) to clearly isolate user data from prompt instructions. Mention that the delimiters represent placeholder text that should be replaced by code
  • Network accessline 11
    - Use paired XML/HTML delimiters to denote dynamic inputs (for example `<email>[content]</email>`) to clearly isolate user data from prompt instructions. Mention that the delimiters represent placeholder text that should be replaced by code
  • Network accessline 12
    - Use the [Structured Output API](https://developer.android.com/agents/skills/device-ai/prompt-api/references/structured-output) if the output requires parsing responses into certain formats. Don't include the Structured Output API implemen
  • Network accessline 12
    - Use the [Structured Output API](https://developer.android.com/agents/skills/device-ai/prompt-api/references/structured-output) if the output requires parsing responses into certain formats. Don't include the Structured Output API implemen
  • Network accessline 14
    - Use [system instructions](https://developer.android.com/agents/skills/device-ai/prompt-api/references/system-instructions) for short instructions that define how a model should behave, and use [prefix caching](https://developer.android.co
  • Network accessline 14
    - Use [system instructions](https://developer.android.com/agents/skills/device-ai/prompt-api/references/system-instructions) for short instructions that define how a model should behave, and use [prefix caching](https://developer.android.co

device-ai/ml-kit-genai-prompt-api/references/structured-output.md

  • Network accessline 32
    - Works in Kotlin only. - ProGuard might interfere with the parsing of your annotated class. Add your annotated class to your [keep rules](https://developer.android.com/topic/performance/app-optimization/keep-rules-overview) to exclude them
  • Network accessline 32
    - Works in Kotlin only. - ProGuard might interfere with the parsing of your annotated class. Add your annotated class to your [keep rules](https://developer.android.com/topic/performance/app-optimization/keep-rules-overview) to exclude them
  • Network accessline 33
    - ProGuard might interfere with the parsing of your annotated class. Add your annotated class to your [keep rules](https://developer.android.com/topic/performance/app-optimization/keep-rules-overview) to exclude them from ProGuard if you ge
  • Network accessline 33
    - ProGuard might interfere with the parsing of your annotated class. Add your annotated class to your [keep rules](https://developer.android.com/topic/performance/app-optimization/keep-rules-overview) to exclude them from ProGuard if you ge
  • Network accessline 42
    1. [Add the ML Kit Prompt API as a dependency](https://developer.android.com/agents/skills/device-ai/prompt-api/references/get-started#configure-project) in your
  • Network accessline 42
    1. [Add the ML Kit Prompt API as a dependency](https://developer.android.com/agents/skills/device-ai/prompt-api/references/get-started#configure-project) in your
  • Network accessline 209
    To check if your structured prompt is within the input token limit, calculate the token count using the [`countTokens()`](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/GenerativeModel#countTokens(com.google.m
  • Network accessline 209
    To check if your structured prompt is within the input token limit, calculate the token count using the [`countTokens()`](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/GenerativeModel#countTokens(com.google.m
  • Network accessline 210
    the token count using the [`countTokens()`](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/GenerativeModel#countTokens(com.google.mlkit.genai.prompt.GenerateContentRequest)) method.
  • Network accessline 210
    the token count using the [`countTokens()`](https://developer.android.com/android/reference/com/google/mlkit/genai/prompt/GenerativeModel#countTokens(com.google.mlkit.genai.prompt.GenerateContentRequest)) method.

device-ai/ml-kit-genai-prompt-api/references/system-instructions.md

  • Network accessline 14
    System instructions work on devices running Gemini Nano V3 and higher. For a list of supported devices, see [Prompt API device support](https://developer.android.com/ml-kit/genai#prompt-device).
  • Network accessline 14
    System instructions work on devices running Gemini Nano V3 and higher. For a list of supported devices, see [Prompt API device support](https://developer.android.com/ml-kit/genai#prompt-device).
  • Network accessline 15
    list of supported devices, see [Prompt API device support](https://developer.android.com/ml-kit/genai#prompt-device).
  • Network accessline 15
    list of supported devices, see [Prompt API device support](https://developer.android.com/ml-kit/genai#prompt-device).
  • Network accessline 19
    We don't recommend using system instructions with [prefix caching](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prefix-caching). In general, use system instructions for
  • Network accessline 19
    We don't recommend using system instructions with [prefix caching](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prefix-caching). In general, use system instructions for
  • Network accessline 20
    [prefix caching](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prefix-caching). In general, use system instructions for
  • Network accessline 20
    [prefix caching](https://developer.android.com/agents/skills/device-ai/prompt-api/references/prefix-caching). In general, use system instructions for

devtools/android-cli/SKILL.md

  • Dangerous shell operationline 33
    - Linux x86-64: curl -fsSL https://dl.google.com/android/cli/latest/linux_x86_64/install.sh \| bash
  • Dangerous shell operationline 33
    - Linux x86-64: curl -fsSL https://dl.google.com/android/cli/latest/linux_x86_64/install.sh \| bash
  • Network accessline 33
    - Linux x86-64: curl -fsSL https://dl.google.com/android/cli/latest/linux_x86_64/install.sh \| bash
  • Network accessline 33
    - Linux x86-64: curl -fsSL https://dl.google.com/android/cli/latest/linux_x86_64/install.sh \| bash
  • Dangerous shell operationline 34
    - Linux ARM64: curl -fsSL https://dl.google.com/android/cli/latest/linux_arm64/install.sh \| bash
  • Dangerous shell operationline 34
    - Linux ARM64: curl -fsSL https://dl.google.com/android/cli/latest/linux_arm64/install.sh \| bash
  • Network accessline 34
    - Linux ARM64: curl -fsSL https://dl.google.com/android/cli/latest/linux_arm64/install.sh \| bash
  • Network accessline 34
    - Linux ARM64: curl -fsSL https://dl.google.com/android/cli/latest/linux_arm64/install.sh \| bash
  • Dangerous shell operationline 35
    - Mac Arm: curl -fsSL https://dl.google.com/android/cli/latest/darwin_arm64/install.sh \| bash
  • Dangerous shell operationline 35
    - Mac Arm: curl -fsSL https://dl.google.com/android/cli/latest/darwin_arm64/install.sh \| bash
  • Network accessline 35
    - Mac Arm: curl -fsSL https://dl.google.com/android/cli/latest/darwin_arm64/install.sh \| bash
  • Network accessline 35
    - Mac Arm: curl -fsSL https://dl.google.com/android/cli/latest/darwin_arm64/install.sh \| bash
  • Dangerous shell operationline 36
    - Mac Intel: curl -fsSL https://dl.google.com/android/cli/latest/darwin_x86_64/install.sh \| bash
  • Dangerous shell operationline 36
    - Mac Intel: curl -fsSL https://dl.google.com/android/cli/latest/darwin_x86_64/install.sh \| bash
  • Network accessline 36
    - Mac Intel: curl -fsSL https://dl.google.com/android/cli/latest/darwin_x86_64/install.sh \| bash
  • Network accessline 36
    - Mac Intel: curl -fsSL https://dl.google.com/android/cli/latest/darwin_x86_64/install.sh \| bash
  • Network accessline 37
    - Windows: curl -fsSL https://dl.google.com/android/cli/latest/windows_x86_64/install.cmd -o "%TEMP%\\i.cmd" \&\& "%TEMP%\\i.cmd"
  • Network accessline 37
    - Windows: curl -fsSL https://dl.google.com/android/cli/latest/windows_x86_64/install.cmd -o "%TEMP%\\i.cmd" \&\& "%TEMP%\\i.cmd"

identity/restore-credentials/SKILL.md

  • Network accessline 142
    1. [**Create a restore key**](#create-restore-key): To create a restore key, complete the following steps:    1. [**Instantiate Credential Manager**](#implementation-guide): Create a `CredentialManager` object.    2. [**Get credential creat
  • Network accessline 142
    1. [**Create a restore key**](#create-restore-key): To create a restore key, complete the following steps:    1. [**Instantiate Credential Manager**](#implementation-guide): Create a `CredentialManager` object.    2. [**Get credential creat
  • Network accessline 143
    1. [**Instantiate Credential Manager**](#implementation-guide): Create a `CredentialManager` object.    2. [**Get credential creation options from the app server**](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API): S
  • Network accessline 143
    1. [**Instantiate Credential Manager**](#implementation-guide): Create a `CredentialManager` object.    2. [**Get credential creation options from the app server**](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API): S
  • Network accessline 144
    2. [**Get credential creation options from the app server**](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API): Send the client app the details required to create the restore key from your app server.
  • Network accessline 144
    2. [**Get credential creation options from the app server**](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API): Send the client app the details required to create the restore key from your app server.
  • Network accessline 145
    3. [**Create the restore key**](https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptionsjson): Create a restore key for the user's account if the user is signed in to your app.
  • Network accessline 145
    3. [**Create the restore key**](https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptionsjson): Create a restore key for the user's account if the user is signed in to your app.
  • Network accessline 146
    4. [**Handle the credential creation response**](https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson): Send the credentials from your client app to your app server for processing, and handle any exceptions.
  • Network accessline 146
    4. [**Handle the credential creation response**](https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson): Send the credentials from your client app to your app server for processing, and handle any exceptions.
  • Network accessline 181
    the user, the app, and additional configuration properties. For more information about the server-side implementation, see [Server-side guidance](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 181
    the user, the app, and additional configuration properties. For more information about the server-side implementation, see [Server-side guidance](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 183
    guidance](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 183
    guidance](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 187
    After parsing the public key creation options sent by the server, create a restore key by wrapping these options in a [`CreateRestoreCredentialRequest`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialReq
  • Network accessline 187
    After parsing the public key creation options sent by the server, create a restore key by wrapping these options in a [`CreateRestoreCredentialRequest`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialReq
  • Network accessline 188
    restore key by wrapping these options in a [`CreateRestoreCredentialRequest`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest) object and calling the [`createCredential()`](https://developer.andro
  • Network accessline 188
    restore key by wrapping these options in a [`CreateRestoreCredentialRequest`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest) object and calling the [`createCredential()`](https://developer.andro
  • Network accessline 189
    [`CreateRestoreCredentialRequest`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest) object and calling the
  • Network accessline 189
    [`CreateRestoreCredentialRequest`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialRequest) object and calling the
  • Network accessline 190
    [`createCredential()`](https://developer.android.com/reference/androidx/credentials/CredentialManager#createCredential(android.content.Context,androidx.credentials.CreateCredentialRequest)) method with the `CredentialManager` object.
  • Network accessline 190
    [`createCredential()`](https://developer.android.com/reference/androidx/credentials/CredentialManager#createCredential(android.content.Context,androidx.credentials.CreateCredentialRequest)) method with the `CredentialManager` object.
  • Network accessline 199
    - `requestJson`: The credential creation options sent by the app server in the [Web Authentication API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API) format for [`PublicKeyCredentialCreationOptionsJSON`](https://w
  • Network accessline 199
    - `requestJson`: The credential creation options sent by the app server in the [Web Authentication API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API) format for [`PublicKeyCredentialCreationOptionsJSON`](https://w
  • Network accessline 212
    The Credential Manager API returns a response of type [`CreateRestoreCredentialResponse`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialResponse). This response holds the public key
  • Network accessline 212
    The Credential Manager API returns a response of type [`CreateRestoreCredentialResponse`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialResponse). This response holds the public key
  • Network accessline 213
    [`CreateRestoreCredentialResponse`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialResponse). This response holds the public key
  • Network accessline 213
    [`CreateRestoreCredentialResponse`](https://developer.android.com/reference/androidx/credentials/CreateRestoreCredentialResponse). This response holds the public key
  • Network accessline 214
    credential registration response in [JSON format](https://w3c.github.io/webauthn/#authenticatorattestationresponse).
  • Network accessline 214
    credential registration response in [JSON format](https://w3c.github.io/webauthn/#authenticatorattestationresponse).
  • Network accessline 224
    - [`CreateRestoreCredentialDomException`](https://developer.android.com/reference/androidx/credentials/exceptions/restorecredential/CreateRestoreCredentialDomException): This exception occurs if `requestJson` is invalid and does not follow 
  • Network accessline 224
    - [`CreateRestoreCredentialDomException`](https://developer.android.com/reference/androidx/credentials/exceptions/restorecredential/CreateRestoreCredentialDomException): This exception occurs if `requestJson` is invalid and does not follow 
  • Network accessline 225
    - [`E2eeUnavailableException`](https://developer.android.com/reference/androidx/credentials/exceptions/restorecredential/E2eeUnavailableException): This exception occurs if `isCloudBackupEnabled` is `true`, but the user's device doesn't hav
  • Network accessline 225
    - [`E2eeUnavailableException`](https://developer.android.com/reference/androidx/credentials/exceptions/restorecredential/E2eeUnavailableException): This exception occurs if `isCloudBackupEnabled` is `true`, but the user's device doesn't hav
  • Network accessline 227
    - `IllegalArgumentException`: This exception occurs if `createRestoreRequest` is empty or not valid JSON, or if it doesn't have a valid `user.id` that conforms to the WebAuthn [specifications](https://w3c.github.io/webauthn/#dictdef-publick
  • Network accessline 227
    - `IllegalArgumentException`: This exception occurs if `createRestoreRequest` is empty or not valid JSON, or if it doesn't have a valid `user.id` that conforms to the WebAuthn [specifications](https://w3c.github.io/webauthn/#dictdef-publick
  • Network accessline 237
    For similar passkey guidance for this step, see [Sign in with a passkey](references/android/identity/passkeys/sign-in-with-passkeys.md). For more information about the server-side implementation, see the [server-side authentication guide](h
  • Network accessline 237
    For similar passkey guidance for this step, see [Sign in with a passkey](references/android/identity/passkeys/sign-in-with-passkeys.md). For more information about the server-side implementation, see the [server-side authentication guide](h
  • Network accessline 239
    authentication guide](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#create_credential_request_options).
  • Network accessline 239
    authentication guide](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#create_credential_request_options).
  • Network accessline 248
    - On the first launch of the app on the device. Credential restoration in this scenario is independent of restoration of the app data. - If app data backup and restore is enabled, get the restore key immediately after the app data is restor
  • Network accessline 248
    - On the first launch of the app on the device. Credential restoration in this scenario is independent of restoration of the app data. - If app data backup and restore is enabled, get the restore key immediately after the app data is restor
  • Network accessline 249
    - If app data backup and restore is enabled, get the restore key immediately after the app data is restored. Use [`BackupAgent`](https://developer.android.com/reference/android/app/backup/BackupAgent) to configure your app's backup and ensu
  • Network accessline 249
    - If app data backup and restore is enabled, get the restore key immediately after the app data is restored. Use [`BackupAgent`](https://developer.android.com/reference/android/app/backup/BackupAgent) to configure your app's backup and ensu
  • Network accessline 271
    The credential manager APIs return a response of type [`GetCredentialResponse`](https://developer.android.com/reference/android/credentials/GetCredentialResponse). The credential contained in this response is
  • Network accessline 271
    The credential manager APIs return a response of type [`GetCredentialResponse`](https://developer.android.com/reference/android/credentials/GetCredentialResponse). The credential contained in this response is
  • Network accessline 272
    [`GetCredentialResponse`](https://developer.android.com/reference/android/credentials/GetCredentialResponse). The credential contained in this response is
  • Network accessline 272
    [`GetCredentialResponse`](https://developer.android.com/reference/android/credentials/GetCredentialResponse). The credential contained in this response is
  • Network accessline 302
    - **System-level actions**: Users uninstall the app or clear its data. - **App-level calls** : Programmatically delete the key by calling [`clearCredentialState()`](https://developer.android.com/reference/androidx/credentials/CredentialMana
  • Network accessline 302
    - **System-level actions**: Users uninstall the app or clear its data. - **App-level calls** : Programmatically delete the key by calling [`clearCredentialState()`](https://developer.android.com/reference/androidx/credentials/CredentialMana
  • Network accessline 303
    - **App-level calls** : Programmatically delete the key by calling [`clearCredentialState()`](https://developer.android.com/reference/androidx/credentials/CredentialManager#clearCredentialState(androidx.credentials.ClearCredentialStateReque
  • Network accessline 303
    - **App-level calls** : Programmatically delete the key by calling [`clearCredentialState()`](https://developer.android.com/reference/androidx/credentials/CredentialManager#clearCredentialState(androidx.credentials.ClearCredentialStateReque
  • Network accessline 349
    - [MDN Web Authentication API Documentation](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API): Mozilla Developer Network
  • Network accessline 349
    - [MDN Web Authentication API Documentation](https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API): Mozilla Developer Network
  • Network accessline 352
    - [W3C `PublicKeyCredentialCreationOptionsJSON`](https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptionsjson): Data structure definition   for WebAuthn credential creation requests in JSON format.
  • Network accessline 352
    - [W3C `PublicKeyCredentialCreationOptionsJSON`](https://w3c.github.io/webauthn/#dictdef-publickeycredentialcreationoptionsjson): Data structure definition   for WebAuthn credential creation requests in JSON format.
  • Network accessline 355
    - [W3C `PublicKeyCredentialRequestOptionsJSON`](https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson): Data structure definition   for WebAuthn authentication or assertion requests in JSON format.
  • Network accessline 355
    - [W3C `PublicKeyCredentialRequestOptionsJSON`](https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson): Data structure definition   for WebAuthn authentication or assertion requests in JSON format.

identity/restore-credentials/references/android/guide/topics/manifest/application-element.md

  • Network accessline 61
    contained in: :   `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 61
    contained in: :   `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 62
    :   `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 62
    :   `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 64
    can contain: :   `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 64
    can contain: :   `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 65
    :   `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 65
    :   `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 67
    `https://developer.android.com/guide/topics/manifest/activity-alias-element`
  • Network accessline 67
    `https://developer.android.com/guide/topics/manifest/activity-alias-element`
  • Network accessline 69
    `https://developer.android.com/guide/topics/manifest/meta-data-element`
  • Network accessline 69
    `https://developer.android.com/guide/topics/manifest/meta-data-element`
  • Network accessline 71
    `https://developer.android.com/guide/topics/manifest/service-element`
  • Network accessline 71
    `https://developer.android.com/guide/topics/manifest/service-element`
  • Network accessline 73
    `https://developer.android.com/guide/topics/manifest/receiver-element`
  • Network accessline 73
    `https://developer.android.com/guide/topics/manifest/receiver-element`
  • Network accessline 75
    `https://developer.android.com/guide/topics/manifest/profileable-element`
  • Network accessline 75
    `https://developer.android.com/guide/topics/manifest/profileable-element`
  • Network accessline 77
    `https://developer.android.com/guide/topics/manifest/provider-element`
  • Network accessline 77
    `https://developer.android.com/guide/topics/manifest/provider-element`
  • Network accessline 79
    `https://developer.android.com/guide/topics/manifest/uses-library-element`
  • Network accessline 79
    `https://developer.android.com/guide/topics/manifest/uses-library-element`
  • Network accessline 81
    `https://developer.android.com/guide/topics/manifest/uses-native-library-element`
  • Network accessline 81
    `https://developer.android.com/guide/topics/manifest/uses-native-library-element`
  • Network accessline 83
    `https://developer.android.com/guide/topics/manifest/property-element`
  • Network accessline 83
    `https://developer.android.com/guide/topics/manifest/property-element`
  • Network accessline 110
    The         `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 110
    The         `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 111
    `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 111
    `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 112
    element has its own         `https://developer.android.com/guide/topics/manifest/activity-element#reparent`         attribute that can override the value set here.
  • Network accessline 112
    element has its own         `https://developer.android.com/guide/topics/manifest/activity-element#reparent`         attribute that can override the value set here.
  • Network accessline 113
    `https://developer.android.com/guide/topics/manifest/activity-element#reparent`
  • Network accessline 113
    `https://developer.android.com/guide/topics/manifest/activity-element#reparent`
  • Network accessline 123
    attribute is `"true"`. If your app processes sensitive data, you can keep         this attribute set to `"true"` and configure         [`android:dataExtractionRules`](https://developer.android.com/guide/topics/manifest/application-element#d
  • Network accessline 123
    attribute is `"true"`. If your app processes sensitive data, you can keep         this attribute set to `"true"` and configure         [`android:dataExtractionRules`](https://developer.android.com/guide/topics/manifest/application-element#d
  • Network accessline 124
    this attribute set to `"true"` and configure         [`android:dataExtractionRules`](https://developer.android.com/guide/topics/manifest/application-element#dataExtractionRules) to safely         exclude sensitive keys or temporary caches w
  • Network accessline 124
    this attribute set to `"true"` and configure         [`android:dataExtractionRules`](https://developer.android.com/guide/topics/manifest/application-element#dataExtractionRules) to safely         exclude sensitive keys or temporary caches w
  • Network accessline 125
    [`android:dataExtractionRules`](https://developer.android.com/guide/topics/manifest/application-element#dataExtractionRules) to safely
  • Network accessline 125
    [`android:dataExtractionRules`](https://developer.android.com/guide/topics/manifest/application-element#dataExtractionRules) to safely
  • Network accessline 138
    For more information, see the         [backup and restore](https://developer.android.com/about/versions/12/behavior-changes-12#backup-restore) section
  • Network accessline 138
    For more information, see the         [backup and restore](https://developer.android.com/about/versions/12/behavior-changes-12#backup-restore) section
  • Network accessline 139
    [backup and restore](https://developer.android.com/about/versions/12/behavior-changes-12#backup-restore) section
  • Network accessline 139
    [backup and restore](https://developer.android.com/about/versions/12/behavior-changes-12#backup-restore) section
  • Network accessline 154
    For more information, see [Data backup overview](https://developer.android.com/guide/topics/data/backup).
  • Network accessline 154
    For more information, see [Data backup overview](https://developer.android.com/guide/topics/data/backup).
  • Network accessline 165
    For more information, see the guide to         [Secure Background Activity Launches](https://developer.android.com/guide/components/activities/secure-bal).
  • Network accessline 165
    For more information, see the guide to         [Secure Background Activity Launches](https://developer.android.com/guide/components/activities/secure-bal).
  • Network accessline 166
    [Secure Background Activity Launches](https://developer.android.com/guide/components/activities/secure-bal).
  • Network accessline 166
    [Secure Background Activity Launches](https://developer.android.com/guide/components/activities/secure-bal).
  • Network accessline 176
    For more information, see [Tagged Pointers](https://source.android.com/devices/tech/debug/tagged-pointers).
  • Network accessline 176
    For more information, see [Tagged Pointers](https://source.android.com/devices/tech/debug/tagged-pointers).
  • Network accessline 200
    `android:backupAgent`     :   The name of the class that implements the application's backup agent,         a subclass of `https://developer.android.com/reference/android/app/backup/BackupAgent`. The attribute value is
  • Network accessline 200
    `android:backupAgent`     :   The name of the class that implements the application's backup agent,         a subclass of `https://developer.android.com/reference/android/app/backup/BackupAgent`. The attribute value is
  • Network accessline 201
    :   The name of the class that implements the application's backup agent,         a subclass of `https://developer.android.com/reference/android/app/backup/BackupAgent`. The attribute value is         a fully qualified class name, such as `
  • Network accessline 201
    :   The name of the class that implements the application's backup agent,         a subclass of `https://developer.android.com/reference/android/app/backup/BackupAgent`. The attribute value is         a fully qualified class name, such as `
  • Network accessline 202
    a subclass of `https://developer.android.com/reference/android/app/backup/BackupAgent`. The attribute value is
  • Network accessline 202
    a subclass of `https://developer.android.com/reference/android/app/backup/BackupAgent`. The attribute value is
  • Network accessline 205
    for example, `".MyBackupAgent"`, it is appended to the         package name specified in the         `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 205
    for example, `".MyBackupAgent"`, it is appended to the         package name specified in the         `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 206
    package name specified in the         `https://developer.android.com/guide/topics/manifest/manifest-element`         element.
  • Network accessline 206
    package name specified in the         `https://developer.android.com/guide/topics/manifest/manifest-element`         element.
  • Network accessline 207
    `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 207
    `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 213
    `android:backupInForeground`     :   Indicates that         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) operations
  • Network accessline 213
    `android:backupInForeground`     :   Indicates that         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) operations
  • Network accessline 214
    :   Indicates that         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) operations         can be performed on this app even if the app is in a foreground-equivalent
  • Network accessline 214
    :   Indicates that         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) operations         can be performed on this app even if the app is in a foreground-equivalent
  • Network accessline 215
    [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) operations
  • Network accessline 215
    [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) operations
  • Network accessline 222
    backing up the app while it's running in the foreground, such as a music app         that is actively playing music using a service in the         `https://developer.android.com/reference/android/app/Service#startForeground(int, android.app
  • Network accessline 222
    backing up the app while it's running in the foreground, such as a music app         that is actively playing music using a service in the         `https://developer.android.com/reference/android/app/Service#startForeground(int, android.app
  • Network accessline 224
    `https://developer.android.com/reference/android/app/Service#startForeground(int, android.app.Notification)` state.
  • Network accessline 224
    `https://developer.android.com/reference/android/app/Service#startForeground(int, android.app.Notification)` state.
  • Network accessline 226
    `android:banner`     :   A [drawable resource](https://developer.android.com/guide/topics/resources/drawable-resource)
  • Network accessline 226
    `android:banner`     :   A [drawable resource](https://developer.android.com/guide/topics/resources/drawable-resource)
  • Network accessline 227
    :   A [drawable resource](https://developer.android.com/guide/topics/resources/drawable-resource)
  • Network accessline 227
    :   A [drawable resource](https://developer.android.com/guide/topics/resources/drawable-resource)
  • Network accessline 228
    providing an extended graphical banner for its associated item. Use with the         `<application>` tag to supply a default banner for all application activities or with the         [`<activity>`](https://developer.android.com/guide/topics
  • Network accessline 228
    providing an extended graphical banner for its associated item. Use with the         `<application>` tag to supply a default banner for all application activities or with the         [`<activity>`](https://developer.android.com/guide/topics
  • Network accessline 229
    `<application>` tag to supply a default banner for all application activities or with the         [`<activity>`](https://developer.android.com/guide/topics/manifest/activity-element)         tag to supply a banner for a specific activity.
  • Network accessline 229
    `<application>` tag to supply a default banner for all application activities or with the         [`<activity>`](https://developer.android.com/guide/topics/manifest/activity-element)         tag to supply a banner for a specific activity.
  • Network accessline 230
    [`<activity>`](https://developer.android.com/guide/topics/manifest/activity-element)
  • Network accessline 230
    [`<activity>`](https://developer.android.com/guide/topics/manifest/activity-element)
  • Network accessline 233
    The system uses the banner to represent an app in         the Android TV home screen. Therefore, only specify this for applications with an activity that handles the         `https://developer.android.com/reference/android/content/Intent#CA
  • Network accessline 233
    The system uses the banner to represent an app in         the Android TV home screen. Therefore, only specify this for applications with an activity that handles the         `https://developer.android.com/reference/android/content/Intent#CA
  • Network accessline 235
    `https://developer.android.com/reference/android/content/Intent#CATEGORY_LEANBACK_LAUNCHER` intent.
  • Network accessline 235
    `https://developer.android.com/reference/android/content/Intent#CATEGORY_LEANBACK_LAUNCHER` intent.
  • Network accessline 242
    For more information, see [Provide a home screen banner](https://developer.android.com/training/tv/start/start#banner).
  • Network accessline 242
    For more information, see [Provide a home screen banner](https://developer.android.com/training/tv/start/start#banner).
  • Network accessline 252
    For information about the format of the XML file, see [Backup and restore](https://developer.android.com/about/versions/12/behavior-changes-12#backup-restore).
  • Network accessline 252
    For information about the format of the XML file, see [Backup and restore](https://developer.android.com/about/versions/12/behavior-changes-12#backup-restore).
  • Network accessline 302
    For more information, see the guide on         [automatic package visibility filtering](https://developer.android.com/training/package-visibility/automatic).
  • Network accessline 302
    For more information, see the guide on         [automatic package visibility filtering](https://developer.android.com/training/package-visibility/automatic).
  • Network accessline 303
    [automatic package visibility filtering](https://developer.android.com/training/package-visibility/automatic).
  • Network accessline 303
    [automatic package visibility filtering](https://developer.android.com/training/package-visibility/automatic).
  • Network accessline 305
    `android:fullBackupContent`     :   This attribute points to an XML file that contains full backup rules for         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup).
  • Network accessline 305
    `android:fullBackupContent`     :   This attribute points to an XML file that contains full backup rules for         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup).
  • Network accessline 306
    :   This attribute points to an XML file that contains full backup rules for         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup).         These rules determine what files get backed up. For more information, se
  • Network accessline 306
    :   This attribute points to an XML file that contains full backup rules for         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup).         These rules determine what files get backed up. For more information, se
  • Network accessline 307
    [Auto Backup](https://developer.android.com/guide/topics/data/autobackup).
  • Network accessline 307
    [Auto Backup](https://developer.android.com/guide/topics/data/autobackup).
  • Network accessline 308
    These rules determine what files get backed up. For more information, see the         [XML config syntax](https://developer.android.com/guide/topics/data/autobackup#XMLSyntax)         for Auto Backup.
  • Network accessline 308
    These rules determine what files get backed up. For more information, see the         [XML config syntax](https://developer.android.com/guide/topics/data/autobackup#XMLSyntax)         for Auto Backup.
  • Network accessline 309
    [XML config syntax](https://developer.android.com/guide/topics/data/autobackup#XMLSyntax)
  • Network accessline 309
    [XML config syntax](https://developer.android.com/guide/topics/data/autobackup#XMLSyntax)
  • Network accessline 313
    This attribute is optional. If it is not specified, by default, Auto Backup         includes most of your app's files. For more information, see         [Files that are backed up](https://developer.android.com/guide/topics/data/autobackup#F
  • Network accessline 313
    This attribute is optional. If it is not specified, by default, Auto Backup         includes most of your app's files. For more information, see         [Files that are backed up](https://developer.android.com/guide/topics/data/autobackup#F
  • Network accessline 315
    [Files that are backed up](https://developer.android.com/guide/topics/data/autobackup#Files).
  • Network accessline 315
    [Files that are backed up](https://developer.android.com/guide/topics/data/autobackup#Files).
  • Network accessline 317
    `android:fullBackupOnly`     :   This attribute indicates whether to use         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) on devices
  • Network accessline 317
    `android:fullBackupOnly`     :   This attribute indicates whether to use         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) on devices
  • Network accessline 318
    :   This attribute indicates whether to use         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) on devices         where it is available. If set to `"true"`, then your app performs
  • Network accessline 318
    :   This attribute indicates whether to use         [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) on devices         where it is available. If set to `"true"`, then your app performs
  • Network accessline 319
    [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) on devices
  • Network accessline 319
    [Auto Backup](https://developer.android.com/guide/topics/data/autobackup) on devices
  • Network accessline 321
    Auto Backup when installed on a device running Android 6.0 (API level 23) or         higher. On older devices, your app ignores this attribute and performs         [key/value backups](https://developer.android.com/guide/topics/data/keyvalue
  • Network accessline 321
    Auto Backup when installed on a device running Android 6.0 (API level 23) or         higher. On older devices, your app ignores this attribute and performs         [key/value backups](https://developer.android.com/guide/topics/data/keyvalue
  • Network accessline 323
    [key/value backups](https://developer.android.com/guide/topics/data/keyvaluebackup).
  • Network accessline 323
    [key/value backups](https://developer.android.com/guide/topics/data/keyvaluebackup).
  • Network accessline 328
    `android:gwpAsanMode`     :   This attribute indicates whether to use         [GWP-ASan](https://developer.android.com/ndk/guides/gwp-asan), a native memory allocator feature that helps
  • Network accessline 328
    `android:gwpAsanMode`     :   This attribute indicates whether to use         [GWP-ASan](https://developer.android.com/ndk/guides/gwp-asan), a native memory allocator feature that helps
  • Network accessline 329
    :   This attribute indicates whether to use         [GWP-ASan](https://developer.android.com/ndk/guides/gwp-asan), a native memory allocator feature that helps         find use-after-free and heap-buffer-overflow bugs.
  • Network accessline 329
    :   This attribute indicates whether to use         [GWP-ASan](https://developer.android.com/ndk/guides/gwp-asan), a native memory allocator feature that helps         find use-after-free and heap-buffer-overflow bugs.
  • Network accessline 330
    [GWP-ASan](https://developer.android.com/ndk/guides/gwp-asan), a native memory allocator feature that helps
  • Network accessline 330
    [GWP-ASan](https://developer.android.com/ndk/guides/gwp-asan), a native memory allocator feature that helps
  • Network accessline 355
    For example, your app might support         [Play feature delivery](https://developer.android.com/platform/technology/app-bundle) and include feature
  • Network accessline 355
    For example, your app might support         [Play feature delivery](https://developer.android.com/platform/technology/app-bundle) and include feature
  • Network accessline 356
    [Play feature delivery](https://developer.android.com/platform/technology/app-bundle) and include feature
  • Network accessline 356
    [Play feature delivery](https://developer.android.com/platform/technology/app-bundle) and include feature
  • Network accessline 367
    activities and views in this application. It's `"true"` if it is         enabled and `"false"` if not. The default value is `"true"` if you set         either [`minSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-el
  • Network accessline 367
    activities and views in this application. It's `"true"` if it is         enabled and `"false"` if not. The default value is `"true"` if you set         either [`minSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-el
  • Network accessline 368
    enabled and `"false"` if not. The default value is `"true"` if you set         either [`minSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#min)         or [`targetSdkVersion`](https://developer.android.com/
  • Network accessline 368
    enabled and `"false"` if not. The default value is `"true"` if you set         either [`minSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#min)         or [`targetSdkVersion`](https://developer.android.com/
  • Network accessline 369
    either [`minSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#min)
  • Network accessline 369
    either [`minSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#min)
  • Network accessline 370
    or [`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target)
  • Network accessline 370
    or [`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target)
  • Network accessline 389
    For more information, read the         [Hardware acceleration](https://developer.android.com/guide/topics/graphics/hardware-accel)
  • Network accessline 389
    For more information, read the         [Hardware acceleration](https://developer.android.com/guide/topics/graphics/hardware-accel)
  • Network accessline 390
    [Hardware acceleration](https://developer.android.com/guide/topics/graphics/hardware-accel)
  • Network accessline 390
    [Hardware acceleration](https://developer.android.com/guide/topics/graphics/hardware-accel)
  • Network accessline 395
    each of the application's components. See the individual         `icon` attributes for the         `https://developer.android.com/guide/topics/manifest/activity-element`,
  • Network accessline 395
    each of the application's components. See the individual         `icon` attributes for the         `https://developer.android.com/guide/topics/manifest/activity-element`,
  • Network accessline 396
    `icon` attributes for the         `https://developer.android.com/guide/topics/manifest/activity-element`,         `https://developer.android.com/guide/topics/manifest/activity-alias-element`,
  • Network accessline 396
    `icon` attributes for the         `https://developer.android.com/guide/topics/manifest/activity-element`,         `https://developer.android.com/guide/topics/manifest/activity-alias-element`,
  • Network accessline 397
    `https://developer.android.com/guide/topics/manifest/activity-element`,
  • Network accessline 397
    `https://developer.android.com/guide/topics/manifest/activity-element`,
  • Network accessline 398
    `https://developer.android.com/guide/topics/manifest/activity-alias-element`,
  • Network accessline 398
    `https://developer.android.com/guide/topics/manifest/activity-alias-element`,
  • Network accessline 399
    `https://developer.android.com/guide/topics/manifest/service-element`,
  • Network accessline 399
    `https://developer.android.com/guide/topics/manifest/service-element`,
  • Network accessline 400
    `https://developer.android.com/guide/topics/manifest/receiver-element`, and
  • Network accessline 400
    `https://developer.android.com/guide/topics/manifest/receiver-element`, and
  • Network accessline 401
    `https://developer.android.com/guide/topics/manifest/provider-element` elements.
  • Network accessline 401
    `https://developer.android.com/guide/topics/manifest/provider-element` elements.
  • Network accessline 430
    For more information, see the         [Safer Intents](https://developer.android.com/about/versions/16/behavior-changes-16#safer-intents)
  • Network accessline 430
    For more information, see the         [Safer Intents](https://developer.android.com/about/versions/16/behavior-changes-16#safer-intents)
  • Network accessline 431
    [Safer Intents](https://developer.android.com/about/versions/16/behavior-changes-16#safer-intents)
  • Network accessline 431
    [Safer Intents](https://developer.android.com/about/versions/16/behavior-changes-16#safer-intents)
  • Network accessline 442
    **Note:** If an app declares this attribute in its manifest, the developer must         follow the         [Stalkerware](https://support.google.com/googleplay/android-developer/answer/9888380#commercial-spyware)
  • Network accessline 442
    **Note:** If an app declares this attribute in its manifest, the developer must         follow the         [Stalkerware](https://support.google.com/googleplay/android-developer/answer/9888380#commercial-spyware)
  • Network accessline 443
    follow the         [Stalkerware](https://support.google.com/googleplay/android-developer/answer/9888380#commercial-spyware)         policy to publish the app to Google Play.
  • Network accessline 443
    follow the         [Stalkerware](https://support.google.com/googleplay/android-developer/answer/9888380#commercial-spyware)         policy to publish the app to Google Play.
  • Network accessline 444
    [Stalkerware](https://support.google.com/googleplay/android-developer/answer/9888380#commercial-spyware)
  • Network accessline 444
    [Stalkerware](https://support.google.com/googleplay/android-developer/answer/9888380#commercial-spyware)
  • Network accessline 478
    To query the available memory size at runtime, use the methods `https://developer.android.com/reference/android/app/ActivityManager#getMemoryClass()` or `https://developer.android.com/reference/android/app/ActivityManager#getLargeMemoryClas
  • Network accessline 478
    To query the available memory size at runtime, use the methods `https://developer.android.com/reference/android/app/ActivityManager#getMemoryClass()` or `https://developer.android.com/reference/android/app/ActivityManager#getLargeMemoryClas
  • Network accessline 482
    label for each of the application's components. See the individual         `label` attributes for the         `https://developer.android.com/guide/topics/manifest/activity-element`,
  • Network accessline 482
    label for each of the application's components. See the individual         `label` attributes for the         `https://developer.android.com/guide/topics/manifest/activity-element`,
  • Network accessline 483
    `label` attributes for the         `https://developer.android.com/guide/topics/manifest/activity-element`,         `https://developer.android.com/guide/topics/manifest/activity-alias-element`,
  • Network accessline 483
    `label` attributes for the         `https://developer.android.com/guide/topics/manifest/activity-element`,         `https://developer.android.com/guide/topics/manifest/activity-alias-element`,
  • Network accessline 484
    `https://developer.android.com/guide/topics/manifest/activity-element`,
  • Network accessline 484
    `https://developer.android.com/guide/topics/manifest/activity-element`,
  • Network accessline 485
    `https://developer.android.com/guide/topics/manifest/activity-alias-element`,
  • Network accessline 485
    `https://developer.android.com/guide/topics/manifest/activity-alias-element`,
  • Network accessline 486
    `https://developer.android.com/guide/topics/manifest/service-element`,
  • Network accessline 486
    `https://developer.android.com/guide/topics/manifest/service-element`,
  • Network accessline 487
    `https://developer.android.com/guide/topics/manifest/receiver-element`, and
  • Network accessline 487
    `https://developer.android.com/guide/topics/manifest/receiver-element`, and
  • Network accessline 488
    `https://developer.android.com/guide/topics/manifest/provider-element` elements.
  • Network accessline 488
    `https://developer.android.com/guide/topics/manifest/provider-element` elements.
  • Network accessline 502
    For more information, see the guide on         [per-app language preferences](https://developer.android.com/guide/topics/resources/app-languages).
  • Network accessline 502
    For more information, see the guide on         [per-app language preferences](https://developer.android.com/guide/topics/resources/app-languages).
  • Network accessline 503
    [per-app language preferences](https://developer.android.com/guide/topics/resources/app-languages).
  • Network accessline 503
    [per-app language preferences](https://developer.android.com/guide/topics/resources/app-languages).
  • Network accessline 512
    launches to let users manage the memory occupied by the application         on the device. The activity is also declared with an         `https://developer.android.com/guide/topics/manifest/activity-element` element.
  • Network accessline 512
    launches to let users manage the memory occupied by the application         on the device. The activity is also declared with an         `https://developer.android.com/guide/topics/manifest/activity-element` element.
  • Network accessline 514
    `https://developer.android.com/guide/topics/manifest/activity-element` element.
  • Network accessline 514
    `https://developer.android.com/guide/topics/manifest/activity-element` element.
  • Network accessline 516
    `android:name`     :   The fully qualified name of an `https://developer.android.com/reference/android/app/Application`
  • Network accessline 516
    `android:name`     :   The fully qualified name of an `https://developer.android.com/reference/android/app/Application`
  • Network accessline 517
    :   The fully qualified name of an `https://developer.android.com/reference/android/app/Application`
  • Network accessline 517
    :   The fully qualified name of an `https://developer.android.com/reference/android/app/Application`
  • Network accessline 529
    :   Specifies the name of the XML file that contains your application's         [Network security         configuration](https://developer.android.com/training/articles/security-config). The value is a reference to the XML resource file
  • Network accessline 529
    :   Specifies the name of the XML file that contains your application's         [Network security         configuration](https://developer.android.com/training/articles/security-config). The value is a reference to the XML resource file
  • Network accessline 530
    [Network security         configuration](https://developer.android.com/training/articles/security-config). The value is a reference to the XML resource file         containing the configuration.
  • Network accessline 530
    [Network security         configuration](https://developer.android.com/training/articles/security-config). The value is a reference to the XML resource file         containing the configuration.
  • Network accessline 531
    configuration](https://developer.android.com/training/articles/security-config). The value is a reference to the XML resource file
  • Network accessline 531
    configuration](https://developer.android.com/training/articles/security-config). The value is a reference to the XML resource file
  • Network accessline 542
    For more information, see the guide on         [supporting 16 KB page sizes](https://developer.android.com/guide/practices/page-sizes).
  • Network accessline 542
    For more information, see the guide on         [supporting 16 KB page sizes](https://developer.android.com/guide/practices/page-sizes).
  • Network accessline 543
    [supporting 16 KB page sizes](https://developer.android.com/guide/practices/page-sizes).
  • Network accessline 543
    [supporting 16 KB page sizes](https://developer.android.com/guide/practices/page-sizes).
  • Network accessline 553
    For more information about permissions, see the         [Permissions](https://developer.android.com/guide/topics/manifest/manifest-intro#perms)
  • Network accessline 553
    For more information about permissions, see the         [Permissions](https://developer.android.com/guide/topics/manifest/manifest-intro#perms)
  • Network accessline 554
    [Permissions](https://developer.android.com/guide/topics/manifest/manifest-intro#perms)
  • Network accessline 554
    [Permissions](https://developer.android.com/guide/topics/manifest/manifest-intro#perms)
  • Network accessline 556
    [Security tips](https://developer.android.com/guide/topics/security/security).
  • Network accessline 556
    [Security tips](https://developer.android.com/guide/topics/security/security).
  • Network accessline 571
    of its components needs to run. All components then run in that process.         The name of the default process matches the package name set by the         `https://developer.android.com/guide/topics/manifest/manifest-element` element.
  • Network accessline 571
    of its components needs to run. All components then run in that process.         The name of the default process matches the package name set by the         `https://developer.android.com/guide/topics/manifest/manifest-element` element.
  • Network accessline 573
    `https://developer.android.com/guide/topics/manifest/manifest-element` element.
  • Network accessline 573
    `https://developer.android.com/guide/topics/manifest/manifest-element` element.
  • Network accessline 599
    :   Whether the application wants to opt out of         [scoped storage](https://developer.android.com/training/data-storage/files/external-scoped).
  • Network accessline 599
    :   Whether the application wants to opt out of         [scoped storage](https://developer.android.com/training/data-storage/files/external-scoped).
  • Network accessline 600
    [scoped storage](https://developer.android.com/training/data-storage/files/external-scoped).
  • Network accessline 600
    [scoped storage](https://developer.android.com/training/data-storage/files/external-scoped).
  • Network accessline 605
    `android:requiredAccountType`     :   Specifies the account type required by the application to function.         If your app requires an `https://developer.android.com/reference/android/accounts/Account`, the value for this attribute must
  • Network accessline 605
    `android:requiredAccountType`     :   Specifies the account type required by the application to function.         If your app requires an `https://developer.android.com/reference/android/accounts/Account`, the value for this attribute must
  • Network accessline 606
    :   Specifies the account type required by the application to function.         If your app requires an `https://developer.android.com/reference/android/accounts/Account`, the value for this attribute must         correspond to the account 
  • Network accessline 606
    :   Specifies the account type required by the application to function.         If your app requires an `https://developer.android.com/reference/android/accounts/Account`, the value for this attribute must         correspond to the account 
  • Network accessline 607
    If your app requires an `https://developer.android.com/reference/android/accounts/Account`, the value for this attribute must
  • Network accessline 607
    If your app requires an `https://developer.android.com/reference/android/accounts/Account`, the value for this attribute must
  • Network accessline 608
    correspond to the account authenticator         type used by your app, as defined by `https://developer.android.com/reference/android/accounts/AuthenticatorDescription`,         such as `"com.google"`.
  • Network accessline 608
    correspond to the account authenticator         type used by your app, as defined by `https://developer.android.com/reference/android/accounts/AuthenticatorDescription`,         such as `"com.google"`.
  • Network accessline 609
    type used by your app, as defined by `https://developer.android.com/reference/android/accounts/AuthenticatorDescription`,
  • Network accessline 609
    type used by your app, as defined by `https://developer.android.com/reference/android/accounts/AuthenticatorDescription`,
  • Network accessline 617
    can't add accounts, specifying this attribute makes your app         unavailable from a restricted profile unless you also declare         [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-ele
  • Network accessline 617
    can't add accounts, specifying this attribute makes your app         unavailable from a restricted profile unless you also declare         [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-ele
  • Network accessline 618
    unavailable from a restricted profile unless you also declare         [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-element#restrictedAccountType) with         the same value.
  • Network accessline 618
    unavailable from a restricted profile unless you also declare         [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-element#restrictedAccountType) with         the same value.
  • Network accessline 619
    [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-element#restrictedAccountType) with
  • Network accessline 619
    [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-element#restrictedAccountType) with
  • Network accessline 623
    **Caution:**         If the account data might reveal personally identifiable information, it's important         that you declare this attribute and leave [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifes
  • Network accessline 623
    **Caution:**         If the account data might reveal personally identifiable information, it's important         that you declare this attribute and leave [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifes
  • Network accessline 624
    If the account data might reveal personally identifiable information, it's important         that you declare this attribute and leave [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-element
  • Network accessline 624
    If the account data might reveal personally identifiable information, it's important         that you declare this attribute and leave [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-element
  • Network accessline 625
    that you declare this attribute and leave [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-element#restrictedAccountType) null, so that restricted profiles cannot use
  • Network accessline 625
    that you declare this attribute and leave [`android:restrictedAccountType`](https://developer.android.com/guide/topics/manifest/application-element#restrictedAccountType) null, so that restricted profiles cannot use
  • Network accessline 633
    :         Specifies whether the app supports [multi-window mode](https://developer.android.com/guide/topics/ui/multi-window).
  • Network accessline 633
    :         Specifies whether the app supports [multi-window mode](https://developer.android.com/guide/topics/ui/multi-window).
  • Network accessline 634
    Specifies whether the app supports [multi-window mode](https://developer.android.com/guide/topics/ui/multi-window).
  • Network accessline 634
    Specifies whether the app supports [multi-window mode](https://developer.android.com/guide/topics/ui/multi-window).
  • Network accessline 636
    > [!WARNING]         > **Warning:** To improve the layout of apps on form factors with smallest width \>= 600dp, the system ignores this attribute for apps that target Android 16 (API level 36). Your app can opt out of the Android 16 behavi
  • Network accessline 636
    > [!WARNING]         > **Warning:** To improve the layout of apps on form factors with smallest width \>= 600dp, the system ignores this attribute for apps that target Android 16 (API level 36). Your app can opt out of the Android 16 behavi
  • Network accessline 637
    > **Warning:** To improve the layout of apps on form factors with smallest width \>= 600dp, the system ignores this attribute for apps that target Android 16 (API level 36). Your app can opt out of the Android 16 behavior, but the opt out w
  • Network accessline 637
    > **Warning:** To improve the layout of apps on form factors with smallest width \>= 600dp, the system ignores this attribute for apps that target Android 16 (API level 36). Your app can opt out of the Android 16 behavior, but the opt out w
  • Network accessline 640
    You can set this attribute in either the [`<activity>`](https://developer.android.com/guide/topics/manifest/activity-element)
  • Network accessline 640
    You can set this attribute in either the [`<activity>`](https://developer.android.com/guide/topics/manifest/activity-element)
  • Network accessline 668
    > - Device manufacturers can override the API level 31 behavior to improve the layout of apps.         > - On devices with Android 16 (API level 36) or higher installed, virtual device owners (select trusted and privileged apps) can configu
  • Network accessline 668
    > - Device manufacturers can override the API level 31 behavior to improve the layout of apps.         > - On devices with Android 16 (API level 36) or higher installed, virtual device owners (select trusted and privileged apps) can configu
  • Network accessline 669
    > - On devices with Android 16 (API level 36) or higher installed, virtual device owners (select trusted and privileged apps) can configure devices they manage to override (ignore) this attribute to improve app layout. See also [Companion a
  • Network accessline 669
    > - On devices with Android 16 (API level 36) or higher installed, virtual device owners (select trusted and privileged apps) can configure devices they manage to override (ignore) this attribute to improve app layout. See also [Companion a
  • Network accessline 670
    >   streaming](https://source.android.com/docs/core/permissions/app-streaming).
  • Network accessline 670
    >   streaming](https://source.android.com/docs/core/permissions/app-streaming).
  • Network accessline 672
    > See [Device compatibility mode](https://developer.android.com/guide/practices/device-compatibility-mode).
  • Network accessline 672
    > See [Device compatibility mode](https://developer.android.com/guide/practices/device-compatibility-mode).
  • Network accessline 683
    :   Specifies the account type required by this application and indicates that restricted profiles         can access such accounts that belong to the owner user. If your app requires an         `https://developer.android.com/reference/andr
  • Network accessline 683
    :   Specifies the account type required by this application and indicates that restricted profiles         can access such accounts that belong to the owner user. If your app requires an         `https://developer.android.com/reference/andr
  • Network accessline 684
    can access such accounts that belong to the owner user. If your app requires an         `https://developer.android.com/reference/android/accounts/Account` and restricted profiles *can*         access the primary user's accounts, the value f
  • Network accessline 684
    can access such accounts that belong to the owner user. If your app requires an         `https://developer.android.com/reference/android/accounts/Account` and restricted profiles *can*         access the primary user's accounts, the value f
  • Network accessline 685
    `https://developer.android.com/reference/android/accounts/Account` and restricted profiles *can*
  • Network accessline 685
    `https://developer.android.com/reference/android/accounts/Account` and restricted profiles *can*
  • Network accessline 686
    access the primary user's accounts, the value for this attribute must         correspond to the account authenticator type used by your app, as         defined by `https://developer.android.com/reference/android/accounts/AuthenticatorDescri
  • Network accessline 686
    access the primary user's accounts, the value for this attribute must         correspond to the account authenticator type used by your app, as         defined by `https://developer.android.com/reference/android/accounts/AuthenticatorDescri
  • Network accessline 688
    defined by `https://developer.android.com/reference/android/accounts/AuthenticatorDescription`, such as `"com.google"`.
  • Network accessline 688
    defined by `https://developer.android.com/reference/android/accounts/AuthenticatorDescription`, such as `"com.google"`.
  • Network accessline 696
    app with accounts that belong to the owner user, which might reveal personally identifiable         information. If the account might reveal personal details, *don't*         use this attribute. Instead, declare the [`android:requiredAccoun
  • Network accessline 696
    app with accounts that belong to the owner user, which might reveal personally identifiable         information. If the account might reveal personal details, *don't*         use this attribute. Instead, declare the [`android:requiredAccoun
  • Network accessline 697
    information. If the account might reveal personal details, *don't*         use this attribute. Instead, declare the [`android:requiredAccountType`](https://developer.android.com/guide/topics/manifest/application-element#requiredAccountType)
  • Network accessline 697
    information. If the account might reveal personal details, *don't*         use this attribute. Instead, declare the [`android:requiredAccountType`](https://developer.android.com/guide/topics/manifest/application-element#requiredAccountType)
  • Network accessline 698
    use this attribute. Instead, declare the [`android:requiredAccountType`](https://developer.android.com/guide/topics/manifest/application-element#requiredAccountType) attribute
  • Network accessline 698
    use this attribute. Instead, declare the [`android:requiredAccountType`](https://developer.android.com/guide/topics/manifest/application-element#requiredAccountType) attribute
  • Network accessline 708
    If this is set to `"true"` and         [`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target)
  • Network accessline 708
    If this is set to `"true"` and         [`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target)
  • Network accessline 709
    [`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target)
  • Network accessline 709
    [`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target)
  • Network accessline 721
    :   An affinity name that applies to all activities within the application,         except for those that set a different affinity with their own         `https://developer.android.com/guide/topics/manifest/activity-element#aff`
  • Network accessline 721
    :   An affinity name that applies to all activities within the application,         except for those that set a different affinity with their own         `https://developer.android.com/guide/topics/manifest/activity-element#aff`
  • Network accessline 722
    except for those that set a different affinity with their own         `https://developer.android.com/guide/topics/manifest/activity-element#aff`         attributes. See that attribute for more information.
  • Network accessline 722
    except for those that set a different affinity with their own         `https://developer.android.com/guide/topics/manifest/activity-element#aff`         attributes. See that attribute for more information.
  • Network accessline 723
    `https://developer.android.com/guide/topics/manifest/activity-element#aff`
  • Network accessline 723
    `https://developer.android.com/guide/topics/manifest/activity-element#aff`
  • Network accessline 728
    affinity. The name of that affinity is the same as the package name         set by the         `https://developer.android.com/guide/topics/manifest/manifest-element` element.
  • Network accessline 728
    affinity. The name of that affinity is the same as the package name         set by the         `https://developer.android.com/guide/topics/manifest/manifest-element` element.
  • Network accessline 730
    `https://developer.android.com/guide/topics/manifest/manifest-element` element.
  • Network accessline 730
    `https://developer.android.com/guide/topics/manifest/manifest-element` element.
  • Network accessline 734
    it might expose functionality or data outside of itself that can cause a security         hole, but be useful for testing. This kind of APK only installs         through `https://developer.android.com/studio/command-line/adb`. You can't pub
  • Network accessline 734
    it might expose functionality or data outside of itself that can cause a security         hole, but be useful for testing. This kind of APK only installs         through `https://developer.android.com/studio/command-line/adb`. You can't pub
  • Network accessline 736
    through `https://developer.android.com/studio/command-line/adb`. You can't publish it to Google Play.
  • Network accessline 736
    through `https://developer.android.com/studio/command-line/adb`. You can't publish it to Google Play.
  • Network accessline 738
    Android Studio automatically adds this attribute when you click **Run**         ![](https://developer.android.com/static/studio/images/buttons/toolbar-run.png).
  • Network accessline 738
    Android Studio automatically adds this attribute when you click **Run**         ![](https://developer.android.com/static/studio/images/buttons/toolbar-run.png).
  • Network accessline 739
    ![](https://developer.android.com/static/studio/images/buttons/toolbar-run.png).
  • Network accessline 739
    ![](https://developer.android.com/static/studio/images/buttons/toolbar-run.png).
  • Network accessline 742
    :   A reference to a style resource defining a default theme for all         activities in the application. Individual activities can override         the default by setting their own `https://developer.android.com/guide/topics/manifest/act
  • Network accessline 742
    :   A reference to a style resource defining a default theme for all         activities in the application. Individual activities can override         the default by setting their own `https://developer.android.com/guide/topics/manifest/act
  • Network accessline 743
    activities in the application. Individual activities can override         the default by setting their own `https://developer.android.com/guide/topics/manifest/activity-element#theme`         attributes. For more information, see [Styles an
  • Network accessline 743
    activities in the application. Individual activities can override         the default by setting their own `https://developer.android.com/guide/topics/manifest/activity-element#theme`         attributes. For more information, see [Styles an
  • Network accessline 744
    the default by setting their own `https://developer.android.com/guide/topics/manifest/activity-element#theme`
  • Network accessline 744
    the default by setting their own `https://developer.android.com/guide/topics/manifest/activity-element#theme`
  • Network accessline 745
    attributes. For more information, see [Styles and themes](https://developer.android.com/guide/topics/ui/themes).
  • Network accessline 745
    attributes. For more information, see [Styles and themes](https://developer.android.com/guide/topics/ui/themes).
  • Network accessline 756
    For more information about the app bar, see [Add the app bar](https://developer.android.com/training/appbar).
  • Network accessline 756
    For more information about the app bar, see [Add the app bar](https://developer.android.com/training/appbar).
  • Network accessline 765
    **Note:**         This attribute is getting deprecated and will be ignored for apps targeting API levels 38 and above.         Specify a [Network Security Configuration](https://developer.android.com/training/articles/security-config#Cleart
  • Network accessline 765
    **Note:**         This attribute is getting deprecated and will be ignored for apps targeting API levels 38 and above.         Specify a [Network Security Configuration](https://developer.android.com/training/articles/security-config#Cleart
  • Network accessline 766
    This attribute is getting deprecated and will be ignored for apps targeting API levels 38 and above.         Specify a [Network Security Configuration](https://developer.android.com/training/articles/security-config#CleartextTraffic) to con
  • Network accessline 766
    This attribute is getting deprecated and will be ignored for apps targeting API levels 38 and above.         Specify a [Network Security Configuration](https://developer.android.com/training/articles/security-config#CleartextTraffic) to con
  • Network accessline 767
    Specify a [Network Security Configuration](https://developer.android.com/training/articles/security-config#CleartextTraffic) to control cleartext traffic for API levels 24 and above.
  • Network accessline 767
    Specify a [Network Security Configuration](https://developer.android.com/training/articles/security-config#CleartextTraffic) to control cleartext traffic for API levels 24 and above.
  • Network accessline 771
    When the attribute is set to `"false"`, platform components, for example, HTTP and FTP         stacks, `https://developer.android.com/reference/android/app/DownloadManager`, and
  • Network accessline 771
    When the attribute is set to `"false"`, platform components, for example, HTTP and FTP         stacks, `https://developer.android.com/reference/android/app/DownloadManager`, and
  • Network accessline 772
    stacks, `https://developer.android.com/reference/android/app/DownloadManager`, and         `https://developer.android.com/reference/android/media/MediaPlayer`, refuse the         app's requests to use cleartext traffic.
  • Network accessline 772
    stacks, `https://developer.android.com/reference/android/app/DownloadManager`, and         `https://developer.android.com/reference/android/media/MediaPlayer`, refuse the         app's requests to use cleartext traffic.
  • Network accessline 773
    `https://developer.android.com/reference/android/media/MediaPlayer`, refuse the
  • Network accessline 773
    `https://developer.android.com/reference/android/media/MediaPlayer`, refuse the
  • Network accessline 782
    This flag is honored on a best-effort basis because it's impossible to prevent all cleartext         traffic from Android applications given the level of access provided to them. For example, there's         no expectation that the `https:/
  • Network accessline 782
    This flag is honored on a best-effort basis because it's impossible to prevent all cleartext         traffic from Android applications given the level of access provided to them. For example, there's         no expectation that the `https:/
  • Network accessline 783
    traffic from Android applications given the level of access provided to them. For example, there's         no expectation that the `https://developer.android.com/reference/java/net/Socket` API honors         this flag, because it can't dete
  • Network accessline 783
    traffic from Android applications given the level of access provided to them. For example, there's         no expectation that the `https://developer.android.com/reference/java/net/Socket` API honors         this flag, because it can't dete
  • Network accessline 784
    no expectation that the `https://developer.android.com/reference/java/net/Socket` API honors
  • Network accessline 784
    no expectation that the `https://developer.android.com/reference/java/net/Socket` API honors
  • Network accessline 788
    network traffic from applications is handled by higher-level network stacks and components, which can         honor this flag by either reading it from         `https://developer.android.com/reference/android/content/pm/ApplicationInfo#flag
  • Network accessline 788
    network traffic from applications is handled by higher-level network stacks and components, which can         honor this flag by either reading it from         `https://developer.android.com/reference/android/content/pm/ApplicationInfo#flag
  • Network accessline 789
    honor this flag by either reading it from         `https://developer.android.com/reference/android/content/pm/ApplicationInfo#flags`         or
  • Network accessline 789
    honor this flag by either reading it from         `https://developer.android.com/reference/android/content/pm/ApplicationInfo#flags`         or
  • Network accessline 790
    `https://developer.android.com/reference/android/content/pm/ApplicationInfo#flags`
  • Network accessline 790
    `https://developer.android.com/reference/android/content/pm/ApplicationInfo#flags`
  • Network accessline 792
    `https://developer.android.com/reference/android/security/NetworkSecurityPolicy#isCleartextTrafficPermitted()`.
  • Network accessline 792
    `https://developer.android.com/reference/android/security/NetworkSecurityPolicy#isCleartextTrafficPermitted()`.
  • Network accessline 795
    **Note:**         `https://developer.android.com/reference/android/webkit/WebView` honors this attribute for
  • Network accessline 795
    **Note:**         `https://developer.android.com/reference/android/webkit/WebView` honors this attribute for
  • Network accessline 796
    `https://developer.android.com/reference/android/webkit/WebView` honors this attribute for
  • Network accessline 796
    `https://developer.android.com/reference/android/webkit/WebView` honors this attribute for
  • Network accessline 800
    During app development, StrictMode can be used to identify any cleartext traffic from the app.         For more information, see         `https://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder#detectCleartextNetwork(
  • Network accessline 800
    During app development, StrictMode can be used to identify any cleartext traffic from the app.         For more information, see         `https://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder#detectCleartextNetwork(
  • Network accessline 802
    `https://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder#detectCleartextNetwork()`.
  • Network accessline 802
    `https://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder#detectCleartextNetwork()`.
  • Network accessline 825
    see also: :   `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 825
    see also: :   `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 826
    :   `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 826
    :   `https://developer.android.com/guide/topics/manifest/activity-element`
  • Network accessline 828
    `https://developer.android.com/guide/topics/manifest/service-element`
  • Network accessline 828
    `https://developer.android.com/guide/topics/manifest/service-element`
  • Network accessline 830
    `https://developer.android.com/guide/topics/manifest/receiver-element`
  • Network accessline 830
    `https://developer.android.com/guide/topics/manifest/receiver-element`
  • Network accessline 832
    `https://developer.android.com/guide/topics/manifest/provider-element`
  • Network accessline 832
    `https://developer.android.com/guide/topics/manifest/provider-element`

identity/restore-credentials/references/android/identity/passkeys/create-passkeys.md

  • Network accessline 10
    > [!TIP] > **Tip:** While designing authentication flows with passkeys, make sure that you follow the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 10
    > [!TIP] > **Tip:** While designing authentication flows with passkeys, make sure that you follow the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 11
    > **Tip:** While designing authentication flows with passkeys, make sure that you follow the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 11
    > **Tip:** While designing authentication flows with passkeys, make sure that you follow the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 13
    ![Passkeys are stored in a credential provider and public keys are stored on the app server](https://developer.android.com/static/identity/passkeys/images/create-passkeys.png) **Figure 1:**Creation of passkeys
  • Network accessline 13
    ![Passkeys are stored in a credential provider and public keys are stored on the app server](https://developer.android.com/static/identity/passkeys/images/create-passkeys.png) **Figure 1:**Creation of passkeys
  • Network accessline 17
    Make sure that you have set up [Digital Asset Links](https://developer.android.com/identity/credential-manager/prerequisites) and that you target
  • Network accessline 17
    Make sure that you have set up [Digital Asset Links](https://developer.android.com/identity/credential-manager/prerequisites) and that you target
  • Network accessline 22
    This guide focuses on the changes required in your [relying party client app](https://developer.android.com/identity/credential-manager#authentication-terminology)
  • Network accessline 22
    This guide focuses on the changes required in your [relying party client app](https://developer.android.com/identity/credential-manager#authentication-terminology)
  • Network accessline 23
    to create a passkey, and gives a brief overview of the [relying party app server](https://developer.android.com/identity/credential-manager#authentication-terminology) implementation. To learn more about the server-side integration, see [Se
  • Network accessline 23
    to create a passkey, and gives a brief overview of the [relying party app server](https://developer.android.com/identity/credential-manager#authentication-terminology) implementation. To learn more about the server-side integration, see [Se
  • Network accessline 24
    server](https://developer.android.com/identity/credential-manager#authentication-terminology) implementation. To learn more about the server-side integration, see
  • Network accessline 24
    server](https://developer.android.com/identity/credential-manager#authentication-terminology) implementation. To learn more about the server-side integration, see
  • Network accessline 25
    [Server-side passkey registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 25
    [Server-side passkey registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 27
    1. [**Add dependencies to your app**](https://developer.android.com/identity/passkeys/create-passkeys#add-dependencies): Add the required Credential Manager libraries.
  • Network accessline 27
    1. [**Add dependencies to your app**](https://developer.android.com/identity/passkeys/create-passkeys#add-dependencies): Add the required Credential Manager libraries.
  • Network accessline 28
    2. [**Instantiate Credential Manager**](https://developer.android.com/identity/passkeys/create-passkeys#instantiate): Create a Credential Manager instance.
  • Network accessline 28
    2. [**Instantiate Credential Manager**](https://developer.android.com/identity/passkeys/create-passkeys#instantiate): Create a Credential Manager instance.
  • Network accessline 29
    3. [**Get credential creation options from the app server**](https://developer.android.com/identity/passkeys/create-passkeys#get-options): From your app server, send the client app the details required to create the passkey, such as informa
  • Network accessline 29
    3. [**Get credential creation options from the app server**](https://developer.android.com/identity/passkeys/create-passkeys#get-options): From your app server, send the client app the details required to create the passkey, such as informa
  • Network accessline 30
    4. [**Request a passkey**](https://developer.android.com/identity/passkeys/create-passkeys#request-passkey): In your app, use the details received from the app server to create a [`GetPublicKeyCredentialOption`](https://developer.android.co
  • Network accessline 30
    4. [**Request a passkey**](https://developer.android.com/identity/passkeys/create-passkeys#request-passkey): In your app, use the details received from the app server to create a [`GetPublicKeyCredentialOption`](https://developer.android.co
  • Network accessline 31
    5. [**Handle the passkey creation response**](https://developer.android.com/identity/passkeys/create-passkeys#handle-response): When you receive the credentials on your client app, you must encode, serialize and then send the public key to 
  • Network accessline 31
    5. [**Handle the passkey creation response**](https://developer.android.com/identity/passkeys/create-passkeys#handle-response): When you receive the credentials on your client app, you must encode, serialize and then send the public key to 
  • Network accessline 32
    6. [**Verify and save the public key on the server**](https://developer.android.com/identity/passkeys/create-passkeys#verify): Complete the server-side steps to verify the origin of the credential and then save the public key.
  • Network accessline 32
    6. [**Verify and save the public key on the server**](https://developer.android.com/identity/passkeys/create-passkeys#verify): Complete the server-side steps to verify the origin of the credential and then save the public key.
  • Network accessline 33
    7. [**Notify the user**](https://developer.android.com/identity/passkeys/create-passkeys#notify): Notify the user that their passkey has been created.
  • Network accessline 33
    7. [**Notify the user**](https://developer.android.com/identity/passkeys/create-passkeys#notify): Notify the user that their passkey has been created.
  • Network accessline 35
    > [!TIP] > **Tip:** To enhance the user experience during sign up, add functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing 
  • Network accessline 35
    > [!TIP] > **Tip:** To enhance the user experience during sign up, add functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing 
  • Network accessline 36
    > **Tip:** To enhance the user experience during sign up, add functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing accounts 
  • Network accessline 36
    > **Tip:** To enhance the user experience during sign up, add functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing accounts 
  • Network accessline 37
    > credential fields](https://developer.android.com/identity/passkeys/create-passkeys#suppress-autofill).
  • Network accessline 37
    > credential fields](https://developer.android.com/identity/passkeys/create-passkeys#suppress-autofill).
  • Network accessline 61
    > [!NOTE] > **Note:** Use the latest available versions of the dependencies. Versions of [`androidx.credentials`](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade) earlier than version 1.2 throw an `Unsuppor
  • Network accessline 61
    > [!NOTE] > **Note:** Use the latest available versions of the dependencies. Versions of [`androidx.credentials`](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade) earlier than version 1.2 throw an `Unsuppor
  • Network accessline 62
    > **Note:** Use the latest available versions of the dependencies. Versions of [`androidx.credentials`](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade) earlier than version 1.2 throw an `UnsupportedOperati
  • Network accessline 62
    > **Note:** Use the latest available versions of the dependencies. Versions of [`androidx.credentials`](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade) earlier than version 1.2 throw an `UnsupportedOperati
  • Network accessline 79
    information required to create a passkey, such as information about the user, the app, and additional configuration properties. To learn more, see [Server side passkey registration](https://developers.google.com/identity/passkeys/developer-
  • Network accessline 79
    information required to create a passkey, such as information about the user, the app, and additional configuration properties. To learn more, see [Server side passkey registration](https://developers.google.com/identity/passkeys/developer-
  • Network accessline 81
    side passkey registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 81
    side passkey registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 84
    server. These are usually represented in JSON format. To learn more about how this decoding is done for web clients, see [Encoding and Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_a
  • Network accessline 84
    server. These are usually represented in JSON format. To learn more about how this decoding is done for web clients, see [Encoding and Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_a
  • Network accessline 85
    this decoding is done for web clients, see [Encoding and Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_and_decoding). For Android client apps, you must handle the decoding separately
  • Network accessline 85
    this decoding is done for web clients, see [Encoding and Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_and_decoding). For Android client apps, you must handle the decoding separately
  • Network accessline 86
    Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_and_decoding). For Android client apps, you must handle the decoding
  • Network accessline 86
    Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_and_decoding). For Android client apps, you must handle the decoding
  • Network accessline 135
    - `displayName`: An optional, user-friendly name for the account intended for display in the account selector. - `authenticatorSelection`: Details about the device that will be used for authentication.   - `authenticatorAttachment`: Indicat
  • Network accessline 135
    - `displayName`: An optional, user-friendly name for the account intended for display in the account selector. - `authenticatorSelection`: Details about the device that will be used for authentication.   - `authenticatorAttachment`: Indicat
  • Network accessline 136
    - `authenticatorSelection`: Details about the device that will be used for authentication.   - `authenticatorAttachment`: Indicates the preferred [authenticator](https://www.w3.org/TR/webauthn/#authenticator). The possible values are as fol
  • Network accessline 136
    - `authenticatorSelection`: Details about the device that will be used for authentication.   - `authenticatorAttachment`: Indicates the preferred [authenticator](https://www.w3.org/TR/webauthn/#authenticator). The possible values are as fol
  • Network accessline 137
    - `authenticatorAttachment`: Indicates the preferred [authenticator](https://www.w3.org/TR/webauthn/#authenticator). The possible values are as follows:
  • Network accessline 137
    - `authenticatorAttachment`: Indicates the preferred [authenticator](https://www.w3.org/TR/webauthn/#authenticator). The possible values are as follows:
  • Network accessline 145
    - `required`: Use this value if invoking a user verification method available on the device is required.     - `discouraged`: Use this value if using a user verification method is discouraged.          To learn more about `userVerification`
  • Network accessline 145
    - `required`: Use this value if invoking a user verification method available on the device is required.     - `discouraged`: Use this value if using a user verification method is discouraged.          To learn more about `userVerification`
  • Network accessline 146
    - `discouraged`: Use this value if using a user verification method is discouraged.          To learn more about `userVerification`, see [userVerification deep dive](https://web.dev/articles/webauthn-user-verification). - `excludeCredential
  • Network accessline 146
    - `discouraged`: Use this value if using a user verification method is discouraged.          To learn more about `userVerification`, see [userVerification deep dive](https://web.dev/articles/webauthn-user-verification). - `excludeCredential
  • Network accessline 147
    To learn more about `userVerification`, see [userVerification deep dive](https://web.dev/articles/webauthn-user-verification).
  • Network accessline 147
    To learn more about `userVerification`, see [userVerification deep dive](https://web.dev/articles/webauthn-user-verification).
  • Network accessline 148
    - `excludeCredentials`: List credential IDs in an [array](https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials) to prevent the creation of a duplicate passkey if one already exists with the same credenti
  • Network accessline 148
    - `excludeCredentials`: List credential IDs in an [array](https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials) to prevent the creation of a duplicate passkey if one already exists with the same credenti
  • Network accessline 158
    - `requestJson`: The credential creation options sent by the app server. - `preferImmediatelyAvailableCredentials`: This is an optional Boolean field that defines whether to only use locally-available or credential provider-synced credentia
  • Network accessline 158
    - `requestJson`: The credential creation options sent by the app server. - `preferImmediatelyAvailableCredentials`: This is an optional Boolean field that defines whether to only use locally-available or credential provider-synced credentia
  • Network accessline 159
    - `preferImmediatelyAvailableCredentials`: This is an optional Boolean field that defines whether to only use locally-available or credential provider-synced credentials to fulfill the request, instead of credentials from security keys or [
  • Network accessline 159
    - `preferImmediatelyAvailableCredentials`: This is an optional Boolean field that defines whether to only use locally-available or credential provider-synced credentials to fulfill the request, instead of credentials from security keys or [
  • Network accessline 160
    - `false` (default): Use this value if the call to Credential Manager was triggered by an explicit user action.   - `true`: Use this value if Credential Manager is opportunistically called, such as when first opening the app.        If you 
  • Network accessline 160
    - `false` (default): Use this value if the call to Credential Manager was triggered by an explicit user action.   - `true`: Use this value if Credential Manager is opportunistically called, such as when first opening the app.        If you 
  • Network accessline 161
    - `true`: Use this value if Credential Manager is opportunistically called, such as when first opening the app.        If you set the value to `true` and there are no immediately available credentials, Credential Manager won't show any UI a
  • Network accessline 161
    - `true`: Use this value if Credential Manager is opportunistically called, such as when first opening the app.        If you set the value to `true` and there are no immediately available credentials, Credential Manager won't show any UI a
  • Network accessline 162
    If you set the value to `true` and there are no immediately available credentials, Credential Manager won't show any UI and the request will fail immediately, returning NoCredentialException for get requests and [`CreateCredentialNoCreateOp
  • Network accessline 162
    If you set the value to `true` and there are no immediately available credentials, Credential Manager won't show any UI and the request will fail immediately, returning NoCredentialException for get requests and [`CreateCredentialNoCreateOp
  • Network accessline 163
    - `origin`: This field is automatically set for Android apps. For browsers and similarly privileged apps that need to set `origin`, see [Make Credential   Manager calls on behalf of other parties for privileged apps](https://developer.andro
  • Network accessline 163
    - `origin`: This field is automatically set for Android apps. For browsers and similarly privileged apps that need to set `origin`, see [Make Credential   Manager calls on behalf of other parties for privileged apps](https://developer.andro
  • Network accessline 164
    Manager calls on behalf of other parties for privileged apps](https://developer.android.com/training/sign-in/privileged-apps).
  • Network accessline 164
    Manager calls on behalf of other parties for privileged apps](https://developer.android.com/training/sign-in/privileged-apps).
  • Network accessline 165
    - `isConditional`: This is an optional field that defaults to `false`. For more information, see [Automatically create a passkey](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade).
  • Network accessline 165
    - `isConditional`: This is an optional field that defaults to `false`. For more information, see [Automatically create a passkey](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade).
  • Network accessline 179
    background and store it in the user's credential provider, such as Google Password Manager. For an example of how this is implemented, see the [public sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/co
  • Network accessline 179
    background and store it in the user's credential provider, such as Google Password Manager. For an example of how this is implemented, see the [public sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/co
  • Network accessline 180
    Password Manager. For an example of how this is implemented, see the [public sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/com/authentication/shrine/ui/AuthenticationScreen.kt#L98). ![An example of t
  • Network accessline 180
    Password Manager. For an example of how this is implemented, see the [public sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/com/authentication/shrine/ui/AuthenticationScreen.kt#L98). ![An example of t
  • Network accessline 181
    sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/com/authentication/shrine/ui/AuthenticationScreen.kt#L98).
  • Network accessline 181
    sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/com/authentication/shrine/ui/AuthenticationScreen.kt#L98).
  • Network accessline 182
    ![An example of the notification Google Password Manager shows after passkey creation](https://developer.android.com/static/identity/passkeys/images/conditional-create-gpm.svg) **Figure 2:**Google Password Manager notification
  • Network accessline 182
    ![An example of the notification Google Password Manager shows after passkey creation](https://developer.android.com/static/identity/passkeys/images/conditional-create-gpm.svg) **Figure 2:**Google Password Manager notification
  • Network accessline 192
    The response after you successfully call `createCredential()` is a [PublicKeyCredential](https://developer.android.com/jetpack/androidx/releases/credentials) object.
  • Network accessline 192
    The response after you successfully call `createCredential()` is a [PublicKeyCredential](https://developer.android.com/jetpack/androidx/releases/credentials) object.
  • Network accessline 193
    [PublicKeyCredential](https://developer.android.com/jetpack/androidx/releases/credentials) object.
  • Network accessline 193
    [PublicKeyCredential](https://developer.android.com/jetpack/androidx/releases/credentials) object.
  • Network accessline 244
    On the app server, you must verify the public key credential and then [save the public key](https://web.dev/articles/passkey-registration#save-credential).
  • Network accessline 244
    On the app server, you must verify the public key credential and then [save the public key](https://web.dev/articles/passkey-registration#save-credential).
  • Network accessline 245
    public key](https://web.dev/articles/passkey-registration#save-credential).
  • Network accessline 245
    public key](https://web.dev/articles/passkey-registration#save-credential).
  • Network accessline 280
    > [!NOTE] > **Note:** When you save the passkey on the app server, make sure that you save the Authenticator Attestation Globally Unique Identifier ([AAGUID](https://web.dev/articles/webauthn-aaguid)) from the client data. The AAGUID is a u
  • Network accessline 280
    > [!NOTE] > **Note:** When you save the passkey on the app server, make sure that you save the Authenticator Attestation Globally Unique Identifier ([AAGUID](https://web.dev/articles/webauthn-aaguid)) from the client data. The AAGUID is a u
  • Network accessline 281
    > **Note:** When you save the passkey on the app server, make sure that you save the Authenticator Attestation Globally Unique Identifier ([AAGUID](https://web.dev/articles/webauthn-aaguid)) from the client data. The AAGUID is a unique numb
  • Network accessline 281
    > **Note:** When you save the passkey on the app server, make sure that you save the Authenticator Attestation Globally Unique Identifier ([AAGUID](https://web.dev/articles/webauthn-aaguid)) from the client data. The AAGUID is a unique numb
  • Network accessline 285
    After the passkey is successfully created, notify your users about the passkey and inform them that they can manage their passkeys from their credential provider app or from [within the app settings](https://developer.android.com/identity/p
  • Network accessline 285
    After the passkey is successfully created, notify your users about the passkey and inform them that they can manage their passkeys from their credential provider app or from [within the app settings](https://developer.android.com/identity/p
  • Network accessline 286
    and inform them that they can manage their passkeys from their credential provider app or from [within the app settings](https://developer.android.com/identity/passkeys/manage-passkeys). Notify users by using a custom dialog, notification, 
  • Network accessline 286
    and inform them that they can manage their passkeys from their credential provider app or from [within the app settings](https://developer.android.com/identity/passkeys/manage-passkeys). Notify users by using a custom dialog, notification, 
  • Network accessline 287
    provider app or from [within the app settings](https://developer.android.com/identity/passkeys/manage-passkeys). Notify users by using a
  • Network accessline 287
    provider app or from [within the app settings](https://developer.android.com/identity/passkeys/manage-passkeys). Notify users by using a
  • Network accessline 301
    To allow users to seamlessly log into their accounts on a new device, implement the [Restore Credentials](https://developer.android.com/identity/sign-in/restore-credentials) functionality. Adding restore credentials with
  • Network accessline 301
    To allow users to seamlessly log into their accounts on a new device, implement the [Restore Credentials](https://developer.android.com/identity/sign-in/restore-credentials) functionality. Adding restore credentials with
  • Network accessline 302
    the [Restore Credentials](https://developer.android.com/identity/sign-in/restore-credentials) functionality. Adding restore credentials with
  • Network accessline 302
    the [Restore Credentials](https://developer.android.com/identity/sign-in/restore-credentials) functionality. Adding restore credentials with
  • Network accessline 325
    - [Sign in with passkeys](https://developer.android.com/identity/passkeys/sign-in-with-passkeys)
  • Network accessline 325
    - [Sign in with passkeys](https://developer.android.com/identity/passkeys/sign-in-with-passkeys)
  • Network accessline 326
    - [Manage passkeys](https://developer.android.com/identity/passkeys/manage-passkeys)
  • Network accessline 326
    - [Manage passkeys](https://developer.android.com/identity/passkeys/manage-passkeys)
  • Network accessline 327
    - [Understand passkey user experience flows](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys)
  • Network accessline 327
    - [Understand passkey user experience flows](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys)

identity/restore-credentials/references/android/identity/passkeys/sign-in-with-passkeys.md

  • Network accessline 1
    This guide continues on the implementation of using passkeys for authentication. Before your users can sign in with passkeys, you must also complete the instructions in [Create passkeys](https://developer.android.com/identity/passkeys/creat
  • Network accessline 1
    This guide continues on the implementation of using passkeys for authentication. Before your users can sign in with passkeys, you must also complete the instructions in [Create passkeys](https://developer.android.com/identity/passkeys/creat
  • Network accessline 3
    instructions in [Create passkeys](https://developer.android.com/identity/passkeys/create-passkeys).
  • Network accessline 3
    instructions in [Create passkeys](https://developer.android.com/identity/passkeys/create-passkeys).
  • Network accessline 5
    To authenticate with a passkey, you must first retrieve the options required to retrieve the public key from your [app server](https://developer.android.com/identity/credential-manager#authentication-terminology), and then call the Credenti
  • Network accessline 5
    To authenticate with a passkey, you must first retrieve the options required to retrieve the public key from your [app server](https://developer.android.com/identity/credential-manager#authentication-terminology), and then call the Credenti
  • Network accessline 6
    retrieve the public key from your [app server](https://developer.android.com/identity/credential-manager#authentication-terminology), and then call the Credential
  • Network accessline 6
    retrieve the public key from your [app server](https://developer.android.com/identity/credential-manager#authentication-terminology), and then call the Credential
  • Network accessline 10
    > [!TIP] > **Tip:** While designing authentication flows with passkeys, make sure you follow the recommendations in the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 10
    > [!TIP] > **Tip:** While designing authentication flows with passkeys, make sure you follow the recommendations in the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 11
    > **Tip:** While designing authentication flows with passkeys, make sure you follow the recommendations in the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 11
    > **Tip:** While designing authentication flows with passkeys, make sure you follow the recommendations in the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 16
    user with a passkey, and gives a brief overview of the app server-side implementation. To learn more about server-side integration, see [Server-side passkey authentication](https://developers.google.com/identity/passkeys/developer-guides/se
  • Network accessline 16
    user with a passkey, and gives a brief overview of the app server-side implementation. To learn more about server-side integration, see [Server-side passkey authentication](https://developers.google.com/identity/passkeys/developer-guides/se
  • Network accessline 18
    passkey authentication](https://developers.google.com/identity/passkeys/developer-guides/server-authentication).
  • Network accessline 18
    passkey authentication](https://developers.google.com/identity/passkeys/developer-guides/server-authentication).
  • Network accessline 23
    1. [**Get credential request options from the server**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#get-options): Make a request from your app to your authentication server to start the passkey sign-in process. Fro
  • Network accessline 23
    1. [**Get credential request options from the server**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#get-options): Make a request from your app to your authentication server to start the passkey sign-in process. Fro
  • Network accessline 24
    2. [**Create the object required to get the public key credential**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#create-object): Wrap the options sent by the server in a `GetPublicKeyCredentialOption` object
  • Network accessline 24
    2. [**Create the object required to get the public key credential**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#create-object): Wrap the options sent by the server in a `GetPublicKeyCredentialOption` object
  • Network accessline 25
    3. ([**optional) Prepare getCredential**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#reduce-latency): In Android 14 and higher, you can reduce latency by showing the account selector by using the `prepareGetCreden
  • Network accessline 25
    3. ([**optional) Prepare getCredential**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#reduce-latency): In Android 14 and higher, you can reduce latency by showing the account selector by using the `prepareGetCreden
  • Network accessline 26
    4. [**Launch the sign in flow**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#launch-sign-in): Call `getCredential()` method to sign in the user
  • Network accessline 26
    4. [**Launch the sign in flow**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#launch-sign-in): Call `getCredential()` method to sign in the user
  • Network accessline 27
    5. [**Handle the response**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#handle-response): Handle each of the possible credential responses.
  • Network accessline 27
    5. [**Handle the response**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#handle-response): Handle each of the possible credential responses.
  • Network accessline 28
    6. [**Handle exceptions**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#handle-exceptions): Make sure that you handle exceptions appropriately.
  • Network accessline 28
    6. [**Handle exceptions**](https://developer.android.com/identity/passkeys/sign-in-with-passkeys#handle-exceptions): Make sure that you handle exceptions appropriately.
  • Network accessline 30
    > [!TIP] > **Tip:** Enhance the user experience during sign in by also adding functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their ex
  • Network accessline 30
    > [!TIP] > **Tip:** Enhance the user experience during sign in by also adding functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their ex
  • Network accessline 31
    > **Tip:** Enhance the user experience during sign in by also adding functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing ac
  • Network accessline 31
    > **Tip:** Enhance the user experience during sign in by also adding functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing ac
  • Network accessline 36
    as well as the `challenge`, which is unique for each sign-in attempt. To learn more about the server-side implementation, see [Create the challenge](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#crea
  • Network accessline 36
    as well as the `challenge`, which is unique for each sign-in attempt. To learn more about the server-side implementation, see [Create the challenge](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#crea
  • Network accessline 37
    more about the server-side implementation, see [Create the challenge](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#create_the_challenge) and [Create credential request options](https://developers.go
  • Network accessline 37
    more about the server-side implementation, see [Create the challenge](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#create_the_challenge) and [Create credential request options](https://developers.go
  • Network accessline 38
    challenge](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#create_the_challenge) and [Create credential request
  • Network accessline 38
    challenge](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#create_the_challenge) and [Create credential request
  • Network accessline 39
    options](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#create_credential_request_options).
  • Network accessline 39
    options](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#create_credential_request_options).
  • Network accessline 49
    To learn more about the fields, see the blogpost about [signing in with a passkey](https://web.dev/articles/passkey-form-autofill#fetch_information_from_the_backend).
  • Network accessline 49
    To learn more about the fields, see the blogpost about [signing in with a passkey](https://web.dev/articles/passkey-form-autofill#fetch_information_from_the_backend).
  • Network accessline 50
    passkey](https://web.dev/articles/passkey-form-autofill#fetch_information_from_the_backend).
  • Network accessline 50
    passkey](https://web.dev/articles/passkey-form-autofill#fetch_information_from_the_backend).
  • Network accessline 79
    > [!NOTE] > **Note:** [`GetCredentialRequest`](https://developer.android.com/reference/androidx/credentials/GetCredentialRequest#GetCredentialRequest) can include an `origin` field. However, `origin` is automatically set for Android apps, a
  • Network accessline 79
    > [!NOTE] > **Note:** [`GetCredentialRequest`](https://developer.android.com/reference/androidx/credentials/GetCredentialRequest#GetCredentialRequest) can include an `origin` field. However, `origin` is automatically set for Android apps, a
  • Network accessline 80
    > **Note:** [`GetCredentialRequest`](https://developer.android.com/reference/androidx/credentials/GetCredentialRequest#GetCredentialRequest) can include an `origin` field. However, `origin` is automatically set for Android apps, and hence s
  • Network accessline 80
    > **Note:** [`GetCredentialRequest`](https://developer.android.com/reference/androidx/credentials/GetCredentialRequest#GetCredentialRequest) can include an `origin` field. However, `origin` is automatically set for Android apps, and hence s
  • Network accessline 81
    > apps](https://developer.android.com/training/sign-in/privileged-apps).
  • Network accessline 81
    > apps](https://developer.android.com/training/sign-in/privileged-apps).
  • Network accessline 85
    On Android 14 or higher, you can reduce latency when showing the account selector by using the [`prepareGetCredential()`](https://developer.android.com/reference/androidx/credentials/CredentialManager#prepareGetCredential) method before cal
  • Network accessline 85
    On Android 14 or higher, you can reduce latency when showing the account selector by using the [`prepareGetCredential()`](https://developer.android.com/reference/androidx/credentials/CredentialManager#prepareGetCredential) method before cal
  • Network accessline 86
    selector by using the [`prepareGetCredential()`](https://developer.android.com/reference/androidx/credentials/CredentialManager#prepareGetCredential) method before calling
  • Network accessline 86
    selector by using the [`prepareGetCredential()`](https://developer.android.com/reference/androidx/credentials/CredentialManager#prepareGetCredential) method before calling
  • Network accessline 89
    The `prepareGetCredential()` method returns a [`PrepareGetCredentialResponse`](https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse) object which is cached. This lets the
  • Network accessline 89
    The `prepareGetCredential()` method returns a [`PrepareGetCredentialResponse`](https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse) object which is cached. This lets the
  • Network accessline 90
    [`PrepareGetCredentialResponse`](https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse) object which is cached. This lets the
  • Network accessline 90
    [`PrepareGetCredentialResponse`](https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse) object which is cached. This lets the
  • Network accessline 130
    > [!NOTE] > **Note:** If you call `getCredential()` but the user does not have any credentials available, or if they don't grant consent to using their credentials, a `NoCredentialException` is returned. To learn more about this exception, 
  • Network accessline 130
    > [!NOTE] > **Note:** If you call `getCredential()` but the user does not have any credentials available, or if they don't grant consent to using their credentials, a `NoCredentialException` is returned. To learn more about this exception, 
  • Network accessline 131
    > **Note:** If you call `getCredential()` but the user does not have any credentials available, or if they don't grant consent to using their credentials, a `NoCredentialException` is returned. To learn more about this exception, see the [t
  • Network accessline 131
    > **Note:** If you call `getCredential()` but the user does not have any credentials available, or if they don't grant consent to using their credentials, a `NoCredentialException` is returned. To learn more about this exception, see the [t
  • Network accessline 197
    On the server, you must verify the credential. To learn more, see [Verify and sign in the user](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#verify_and_sign_in_the_user).
  • Network accessline 197
    On the server, you must verify the credential. To learn more, see [Verify and sign in the user](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#verify_and_sign_in_the_user).
  • Network accessline 198
    sign in the user](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#verify_and_sign_in_the_user).
  • Network accessline 198
    sign in the user](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#verify_and_sign_in_the_user).
  • Network accessline 202
    You should handle all the subclass exceptions of [`GetCredentialException`](https://developer.android.com/reference/androidx/credentials/exceptions/GetCredentialException).
  • Network accessline 202
    You should handle all the subclass exceptions of [`GetCredentialException`](https://developer.android.com/reference/androidx/credentials/exceptions/GetCredentialException).
  • Network accessline 203
    To learn how to handle each exception, see the [troubleshooting guide](https://developer.android.com/identity/sign-in/credential-manager-troubleshooting-guide).
  • Network accessline 203
    To learn how to handle each exception, see the [troubleshooting guide](https://developer.android.com/identity/sign-in/credential-manager-troubleshooting-guide).
  • Network accessline 218
    - [Manage passkeys](https://developer.android.com/identity/passkeys/manage-passkeys)
  • Network accessline 218
    - [Manage passkeys](https://developer.android.com/identity/passkeys/manage-passkeys)
  • Network accessline 219
    - [Understand passkey user experience flows](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys)
  • Network accessline 219
    - [Understand passkey user experience flows](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys)

identity/verified-email/SKILL.md

  • Network accessline 34
    - *[OpenID4VP Standard](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#name-introduction)*: The specification used to create digital credentials requests.
  • Network accessline 34
    - *[OpenID4VP Standard](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#name-introduction)*: The specification used to create digital credentials requests.
  • Network accessline 35
    - *[Digital Credentials Demo](https://digital-credentials.dev/)*: Example requests and cross-platform testing tool.
  • Network accessline 35
    - *[Digital Credentials Demo](https://digital-credentials.dev/)*: Example requests and cross-platform testing tool.
  • Network accessline 36
    - *[W3C Verifiable Credentials](https://www.w3.org/TR/vc-data-model-2.0/)*: The data model for cryptographically secured claims.
  • Network accessline 36
    - *[W3C Verifiable Credentials](https://www.w3.org/TR/vc-data-model-2.0/)*: The data model for cryptographically secured claims.
  • Network accessline 37
    - *[SD-JWT](https://datatracker.ietf.org/doc/draft-ietf-oauth-selective-disclosure-jwt/)*: Selective Disclosure JSON Web Token format used for responses.
  • Network accessline 37
    - *[SD-JWT](https://datatracker.ietf.org/doc/draft-ietf-oauth-selective-disclosure-jwt/)*: Selective Disclosure JSON Web Token format used for responses.
  • Network accessline 38
    - *[mdoc](https://www.iso.org/standard/69084.html)*: ISO/IEC 18013-5 standard for mobile documents.
  • Network accessline 38
    - *[mdoc](https://www.iso.org/standard/69084.html)*: ISO/IEC 18013-5 standard for mobile documents.
  • Network accessline 122
    This guide describes how to implement verified email retrieval using the [Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
  • Network accessline 122
    This guide describes how to implement verified email retrieval using the [Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
  • Network accessline 123
    [Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
  • Network accessline 123
    [Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
  • Network accessline 124
    Presentations (OpenID4VP)](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html) request.
  • Network accessline 124
    Presentations (OpenID4VP)](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html) request.
  • Network accessline 159
    To request a verified email, construct a [`GetCredentialRequest`](https://developer.android.com/reference/android/credentials/GetCredentialRequest)
  • Network accessline 159
    To request a verified email, construct a [`GetCredentialRequest`](https://developer.android.com/reference/android/credentials/GetCredentialRequest)
  • Network accessline 160
    containing a [`GetDigitalCredentialOption`](https://developer.android.com/reference/androidx/credentials/GetDigitalCredentialOption). This option requires a
  • Network accessline 160
    containing a [`GetDigitalCredentialOption`](https://developer.android.com/reference/androidx/credentials/GetDigitalCredentialOption). This option requires a
  • Network accessline 218
    > [!NOTE]   > **Note:** If `email_verified` is `true` and `hd` is empty in the response, it implies that the account is an authorized Google Account. Google does not issue [verifiable credentials](references/android/identity/digital-credent
  • Network accessline 218
    > [!NOTE]   > **Note:** If `email_verified` is `true` and `hd` is empty in the response, it implies that the account is an authorized Google Account. Google does not issue [verifiable credentials](references/android/identity/digital-credent
  • Network accessline 220
    > Identity guides](https://developers.google.com/identity/gsi/web/guides/verify-google-id-token).
  • Network accessline 220
    > Identity guides](https://developers.google.com/identity/gsi/web/guides/verify-google-id-token).
  • Network accessline 232
    > [!NOTE] > **Note:** The `hd` and `email_verified` fields are hidden from users in Credential Manager's built-in UI. You cannot make a request with only these hidden fields- in case of such requests, the response is the [`GetCredentialCanc
  • Network accessline 232
    > [!NOTE] > **Note:** The `hd` and `email_verified` fields are hidden from users in Credential Manager's built-in UI. You cannot make a request with only these hidden fields- in case of such requests, the response is the [`GetCredentialCanc
  • Network accessline 233
    > **Note:** The `hd` and `email_verified` fields are hidden from users in Credential Manager's built-in UI. You cannot make a request with only these hidden fields- in case of such requests, the response is the [`GetCredentialCancellationEx
  • Network accessline 233
    > **Note:** The `hd` and `email_verified` fields are hidden from users in Credential Manager's built-in UI. You cannot make a request with only these hidden fields- in case of such requests, the response is the [`GetCredentialCancellationEx
  • Network accessline 268
    > [!WARNING] > **Warning:** From August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been updated to strictly match the W3C standards. It contains `
  • Network accessline 268
    > [!WARNING] > **Warning:** From August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been updated to strictly match the W3C standards. It contains `
  • Network accessline 269
    > **Warning:** From August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been updated to strictly match the W3C standards. It contains `data` and `pr
  • Network accessline 269
    > **Warning:** From August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been updated to strictly match the W3C standards. It contains `data` and `pr
  • Network accessline 278
    The following code extracts the raw [Selective Disclosure JWT (SD-JWT)](https://datatracker.ietf.org/doc/rfc9901/) and uses a helper to decode its claims.
  • Network accessline 278
    The following code extracts the raw [Selective Disclosure JWT (SD-JWT)](https://datatracker.ietf.org/doc/rfc9901/) and uses a helper to decode its claims.
  • Network accessline 279
    (SD-JWT)](https://datatracker.ietf.org/doc/rfc9901/) and uses a helper to decode its claims.
  • Network accessline 279
    (SD-JWT)](https://datatracker.ietf.org/doc/rfc9901/) and uses a helper to decode its claims.
  • Network accessline 305
    The Credential Manager API will return a [`DigitalCredential`](https://developer.android.com/reference/androidx/credentials/DigitalCredential)
  • Network accessline 305
    The Credential Manager API will return a [`DigitalCredential`](https://developer.android.com/reference/androidx/credentials/DigitalCredential)
  • Network accessline 332
    "exp": 1775688222,       "iat": 1775083422,       "iss": "https://verifiablecredentials-pa.googleapis.com",
  • Network accessline 332
    "exp": 1775688222,       "iat": 1775083422,       "iss": "https://verifiablecredentials-pa.googleapis.com",
  • Network accessline 333
    "iat": 1775083422,       "iss": "https://verifiablecredentials-pa.googleapis.com",       "vct": "UserInfoCredential",
  • Network accessline 333
    "iat": 1775083422,       "iss": "https://verifiablecredentials-pa.googleapis.com",       "vct": "UserInfoCredential",
  • Network accessline 334
    "iss": "https://verifiablecredentials-pa.googleapis.com",
  • Network accessline 334
    "iss": "https://verifiablecredentials-pa.googleapis.com",
  • Network accessline 339
    "family_name": "Doe",       "name": "Jane Doe",       "picture": "http://example.com/janedoe/me.jpg",
  • Network accessline 339
    "family_name": "Doe",       "name": "Jane Doe",       "picture": "http://example.com/janedoe/me.jpg",
  • Network accessline 340
    "name": "Jane Doe",       "picture": "http://example.com/janedoe/me.jpg",       "hd": ""
  • Network accessline 340
    "name": "Jane Doe",       "picture": "http://example.com/janedoe/me.jpg",       "hd": ""
  • Network accessline 341
    "picture": "http://example.com/janedoe/me.jpg",
  • Network accessline 341
    "picture": "http://example.com/janedoe/me.jpg",
  • Network accessline 369
    - **Verify issuer** : Ensure the `iss` (issuer) field matches `https://verifiablecredentials-pa.googleapis.com`.
  • Network accessline 369
    - **Verify issuer** : Ensure the `iss` (issuer) field matches `https://verifiablecredentials-pa.googleapis.com`.
  • Network accessline 370
    - **Verify signature**: Check the signature of the SD-JWT using the public keys (JWKs) available at https://verifiablecredentials-pa.googleapis.com/.well-known/vc-public-jwks.
  • Network accessline 370
    - **Verify signature**: Check the signature of the SD-JWT using the public keys (JWKs) available at https://verifiablecredentials-pa.googleapis.com/.well-known/vc-public-jwks.
  • Network accessline 372
    > [!NOTE] > **Note:** Use a standard library (such as [@sd-jwt/sd-jwt-vc](https://datatracker.ietf.org/doc/rfc9901/) for Node.js) to perform the verification steps as outlined in the [OpenID for Verifiable
  • Network accessline 372
    > [!NOTE] > **Note:** Use a standard library (such as [@sd-jwt/sd-jwt-vc](https://datatracker.ietf.org/doc/rfc9901/) for Node.js) to perform the verification steps as outlined in the [OpenID for Verifiable
  • Network accessline 373
    > **Note:** Use a standard library (such as [@sd-jwt/sd-jwt-vc](https://datatracker.ietf.org/doc/rfc9901/) for Node.js) to perform the verification steps as outlined in the [OpenID for Verifiable
  • Network accessline 373
    > **Note:** Use a standard library (such as [@sd-jwt/sd-jwt-vc](https://datatracker.ietf.org/doc/rfc9901/) for Node.js) to perform the verification steps as outlined in the [OpenID for Verifiable
  • Network accessline 374
    > Presentations specification](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html).
  • Network accessline 374
    > Presentations specification](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html).
  • Network accessline 383
    > [!WARNING] > **Warning:** As mentioned in [Parse the response on the client](#parse-response), from August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) forma
  • Network accessline 383
    > [!WARNING] > **Warning:** As mentioned in [Parse the response on the client](#parse-response), from August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) forma
  • Network accessline 384
    > **Warning:** As mentioned in [Parse the response on the client](#parse-response), from August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been up
  • Network accessline 384
    > **Warning:** As mentioned in [Parse the response on the client](#parse-response), from August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been up
  • Network accessline 414
    For the flow to work on a [`WebView`](https://developer.android.com/reference/android/webkit/WebView), developers should implement a
  • Network accessline 414
    For the flow to work on a [`WebView`](https://developer.android.com/reference/android/webkit/WebView), developers should implement a

identity/verified-email/references/android/identity/credential-manager/index.md

  • Network accessline 1
    [Credential Manager](https://developer.android.com/reference/kotlin/androidx/credentials/package-summary) is the recommended Jetpack API for credential exchange
  • Network accessline 1
    [Credential Manager](https://developer.android.com/reference/kotlin/androidx/credentials/package-summary) is the recommended Jetpack API for credential exchange
  • Network accessline 12
    - **Support for various authentication mechanisms** : Enables users to sign up or sign in to your app using:   - [Passkeys](https://developer.android.com/identity/passkeys)
  • Network accessline 12
    - **Support for various authentication mechanisms** : Enables users to sign up or sign in to your app using:   - [Passkeys](https://developer.android.com/identity/passkeys)
  • Network accessline 13
    - [Passkeys](https://developer.android.com/identity/passkeys)
  • Network accessline 13
    - [Passkeys](https://developer.android.com/identity/passkeys)
  • Network accessline 14
    - [Sign-in with Google](https://developer.android.com/identity/sign-in/credential-manager-siwg) and other federated sign-in mechanisms
  • Network accessline 14
    - [Sign-in with Google](https://developer.android.com/identity/sign-in/credential-manager-siwg) and other federated sign-in mechanisms
  • Network accessline 15
    - [Passwords](https://developer.android.com/identity/passwords)
  • Network accessline 15
    - [Passwords](https://developer.android.com/identity/passwords)
  • Network accessline 16
    - [Digital credentials](https://developer.android.com/identity/digital-credentials)
  • Network accessline 16
    - [Digital credentials](https://developer.android.com/identity/digital-credentials)
  • Network accessline 17
    - **Cross-device credential restore** : Provides integration with [Restore   Credentials](https://developer.android.com/identity/sign-in/restore-credentials), allowing users to seamlessly start using your app on a new device. - **Seamless i
  • Network accessline 17
    - **Cross-device credential restore** : Provides integration with [Restore   Credentials](https://developer.android.com/identity/sign-in/restore-credentials), allowing users to seamlessly start using your app on a new device. - **Seamless i
  • Network accessline 18
    Credentials](https://developer.android.com/identity/sign-in/restore-credentials), allowing users to seamlessly start using your app on a new device.
  • Network accessline 18
    Credentials](https://developer.android.com/identity/sign-in/restore-credentials), allowing users to seamlessly start using your app on a new device.
  • Network accessline 19
    - **Seamless integration with credential providers** : Offers support for [credential providers](https://developer.android.com/identity/sign-in/credential-provider), including password managers such as Google Password Manager.
  • Network accessline 19
    - **Seamless integration with credential providers** : Offers support for [credential providers](https://developer.android.com/identity/sign-in/credential-provider), including password managers such as Google Password Manager.
  • Network accessline 20
    - **Credential management**: Enables updating the metadata for user credentials, helping to keep credentials consistent across your app and credential providers. - **WebView compatibility** : Works with apps that use [WebView](https://devel
  • Network accessline 20
    - **Credential management**: Enables updating the metadata for user credentials, helping to keep credentials consistent across your app and credential providers. - **WebView compatibility** : Works with apps that use [WebView](https://devel
  • Network accessline 21
    - **WebView compatibility** : Works with apps that use [WebView](https://developer.android.com/identity/sign-in/credential-manager-webview).
  • Network accessline 21
    - **WebView compatibility** : Works with apps that use [WebView](https://developer.android.com/identity/sign-in/credential-manager-webview).
  • Network accessline 22
    - **Autofill integration** : Integrates with [autofill](https://developer.android.com/identity/autofill/credential-manager-autofill) to display credentials within the autofill UI.
  • Network accessline 22
    - **Autofill integration** : Integrates with [autofill](https://developer.android.com/identity/autofill/credential-manager-autofill) to display credentials within the autofill UI.
  • Network accessline 29
    - **Enhanced security**: Passkeys offer enhanced security and protect users from phishing attempts. - **Support for various form factors** : The APIs work across Android [form   factors](https://developer.android.com/identity/form-factors),
  • Network accessline 29
    - **Enhanced security**: Passkeys offer enhanced security and protect users from phishing attempts. - **Support for various form factors** : The APIs work across Android [form   factors](https://developer.android.com/identity/form-factors),
  • Network accessline 30
    - **Support for various form factors** : The APIs work across Android [form   factors](https://developer.android.com/identity/form-factors), including mobile, Android XR, and Wear OS devices. - **Simplified authentication across use cases**
  • Network accessline 30
    - **Support for various form factors** : The APIs work across Android [form   factors](https://developer.android.com/identity/form-factors), including mobile, Android XR, and Wear OS devices. - **Simplified authentication across use cases**
  • Network accessline 31
    factors](https://developer.android.com/identity/form-factors), including mobile, Android XR, and Wear OS devices.
  • Network accessline 31
    factors](https://developer.android.com/identity/form-factors), including mobile, Android XR, and Wear OS devices.
  • Network accessline 32
    - **Simplified authentication across use cases** : [Digital credentials](https://developer.android.com/identity/digital-credentials), such as digital driver's licenses, corporate IDs, and national ID cards, enable authentication across vari
  • Network accessline 32
    - **Simplified authentication across use cases** : [Digital credentials](https://developer.android.com/identity/digital-credentials), such as digital driver's licenses, corporate IDs, and national ID cards, enable authentication across vari
  • Network accessline 35
    ![The Credential Manager user interface for passkeys, passwords, and federated sign-ins](https://developer.android.com/static/identity/credential-manager/images/credman-ui.png) **Figure 1.**Credential Manager's built-in unified interface fo
  • Network accessline 35
    ![The Credential Manager user interface for passkeys, passwords, and federated sign-ins](https://developer.android.com/static/identity/credential-manager/images/credman-ui.png) **Figure 1.**Credential Manager's built-in unified interface fo
  • Network accessline 42
    - **Relying party client app**: The client---in this case, your Android app---that handles the user interface to create and use passkeys. - **Relying party server**: An app server that helps with the creation, storage, and verification of p
  • Network accessline 42
    - **Relying party client app**: The client---in this case, your Android app---that handles the user interface to create and use passkeys. - **Relying party server**: An app server that helps with the creation, storage, and verification of p
  • Network accessline 44
    - **Credential provider** : A component that stores and provides user credentials, such as Google Password Manager. Note that the [FIDO documentation](https://fidoalliance.org/passkeys/) refers to credential providers as credential managers
  • Network accessline 44
    - **Credential provider** : A component that stores and provides user credentials, such as Google Password Manager. Note that the [FIDO documentation](https://fidoalliance.org/passkeys/) refers to credential providers as credential managers
  • Network accessline 50
    simplifying the authentication process. To integrate with Credential Manager as a credential provider, see [Implement authentication as a credential provider](https://developer.android.com/identity/sign-in/credential-provider).
  • Network accessline 50
    simplifying the authentication process. To integrate with Credential Manager as a credential provider, see [Implement authentication as a credential provider](https://developer.android.com/identity/sign-in/credential-provider).
  • Network accessline 52
    [Implement authentication as a credential provider](https://developer.android.com/identity/sign-in/credential-provider).
  • Network accessline 52
    [Implement authentication as a credential provider](https://developer.android.com/identity/sign-in/credential-provider).
  • Network accessline 54
    For more information about how Google Password Manager keeps your credentials secure, see [Security of Passkeys in the Google Password Manager](https://security.googleblog.com/2022/10/SecurityofPasskeysintheGooglePasswordManager.html).
  • Network accessline 54
    For more information about how Google Password Manager keeps your credentials secure, see [Security of Passkeys in the Google Password Manager](https://security.googleblog.com/2022/10/SecurityofPasskeysintheGooglePasswordManager.html).
  • Network accessline 56
    [Security of Passkeys in the Google Password Manager](https://security.googleblog.com/2022/10/SecurityofPasskeysintheGooglePasswordManager.html).
  • Network accessline 56
    [Security of Passkeys in the Google Password Manager](https://security.googleblog.com/2022/10/SecurityofPasskeysintheGooglePasswordManager.html).
  • Network accessline 64
    - [Google Sign-In](https://developer.android.com/identity/sign-in/legacy-gsi-migration)
  • Network accessline 64
    - [Google Sign-In](https://developer.android.com/identity/sign-in/legacy-gsi-migration)
  • Network accessline 65
    - [One Tap](https://developer.android.com/identity/legacy/one-tap)
  • Network accessline 65
    - [One Tap](https://developer.android.com/identity/legacy/one-tap)
  • Network accessline 66
    - [Smart Lock for Passwords](https://developer.android.com/identity/sign-in/smart-lock-migration)
  • Network accessline 66
    - [Smart Lock for Passwords](https://developer.android.com/identity/sign-in/smart-lock-migration)
  • Network accessline 67
    - [FIDO2](https://developer.android.com/identity/sign-in/fido2-migration)
  • Network accessline 67
    - [FIDO2](https://developer.android.com/identity/sign-in/fido2-migration)

identity/verified-email/references/android/identity/digital-credentials/email-verification-implementation.md

  • Network accessline 3
    [View on GitHub](https://github.com/android/skills/tree/main/identity/verified-email)
  • Network accessline 3
    [View on GitHub](https://github.com/android/skills/tree/main/identity/verified-email)
  • Network accessline 7
    Use an [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate a secure, OTP-less email verification flow into your app. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/
  • Network accessline 7
    Use an [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate a secure, OTP-less email verification flow into your app. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/
  • Network accessline 15
    This guide describes how to implement verified email retrieval using the [Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
  • Network accessline 15
    This guide describes how to implement verified email retrieval using the [Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
  • Network accessline 16
    [Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
  • Network accessline 16
    [Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
  • Network accessline 17
    Presentations (OpenID4VP)](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html) request.
  • Network accessline 17
    Presentations (OpenID4VP)](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html) request.
  • Network accessline 52
    To request a verified email, construct a [`GetCredentialRequest`](https://developer.android.com/reference/android/credentials/GetCredentialRequest)
  • Network accessline 52
    To request a verified email, construct a [`GetCredentialRequest`](https://developer.android.com/reference/android/credentials/GetCredentialRequest)
  • Network accessline 53
    containing a [`GetDigitalCredentialOption`](https://developer.android.com/reference/androidx/credentials/GetDigitalCredentialOption). This option requires a
  • Network accessline 53
    containing a [`GetDigitalCredentialOption`](https://developer.android.com/reference/androidx/credentials/GetDigitalCredentialOption). This option requires a
  • Network accessline 111
    > [!NOTE]   > **Note:** If `email_verified` is `true` and `hd` is empty in the response, it implies that the account is an authorized Google Account. Google does not issue [verifiable credentials](https://developer.android.com/identity/digi
  • Network accessline 111
    > [!NOTE]   > **Note:** If `email_verified` is `true` and `hd` is empty in the response, it implies that the account is an authorized Google Account. Google does not issue [verifiable credentials](https://developer.android.com/identity/digi
  • Network accessline 112
    > **Note:** If `email_verified` is `true` and `hd` is empty in the response, it implies that the account is an authorized Google Account. Google does not issue [verifiable credentials](https://developer.android.com/identity/digital-credenti
  • Network accessline 112
    > **Note:** If `email_verified` is `true` and `hd` is empty in the response, it implies that the account is an authorized Google Account. Google does not issue [verifiable credentials](https://developer.android.com/identity/digital-credenti
  • Network accessline 113
    > Identity guides](https://developers.google.com/identity/gsi/web/guides/verify-google-id-token).
  • Network accessline 113
    > Identity guides](https://developers.google.com/identity/gsi/web/guides/verify-google-id-token).
  • Network accessline 125
    > [!NOTE] > **Note:** The `hd` and `email_verified` fields are hidden from users in Credential Manager's built-in UI. You cannot make a request with only these hidden fields- in case of such requests, the response is the [`GetCredentialCanc
  • Network accessline 125
    > [!NOTE] > **Note:** The `hd` and `email_verified` fields are hidden from users in Credential Manager's built-in UI. You cannot make a request with only these hidden fields- in case of such requests, the response is the [`GetCredentialCanc
  • Network accessline 126
    > **Note:** The `hd` and `email_verified` fields are hidden from users in Credential Manager's built-in UI. You cannot make a request with only these hidden fields- in case of such requests, the response is the [`GetCredentialCancellationEx
  • Network accessline 126
    > **Note:** The `hd` and `email_verified` fields are hidden from users in Credential Manager's built-in UI. You cannot make a request with only these hidden fields- in case of such requests, the response is the [`GetCredentialCancellationEx
  • Network accessline 161
    > [!WARNING] > **Warning:** From August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been updated to strictly match the W3C standards. It contains `
  • Network accessline 161
    > [!WARNING] > **Warning:** From August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been updated to strictly match the W3C standards. It contains `
  • Network accessline 162
    > **Warning:** From August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been updated to strictly match the W3C standards. It contains `data` and `pr
  • Network accessline 162
    > **Warning:** From August 2026, the [response JSON](https://developer.android.com/reference/androidx/credentials/DigitalCredential#getCredentialJson()) format has been updated to strictly match the W3C standards. It contains `data` and `pr
  • Network accessline 171
    The following code extracts the raw [Selective Disclosure JWT (SD-JWT)](https://datatracker.ietf.org/doc/rfc9901/) and uses a helper to decode its claims.
  • Network accessline 171
    The following code extracts the raw [Selective Disclosure JWT (SD-JWT)](https://datatracker.ietf.org/doc/rfc9901/) and uses a helper to decode its claims.
  • Network accessline 172
    (SD-JWT)](https://datatracker.ietf.org/doc/rfc9901/) and uses a helper to decode its claims.
  • Network accessline 172
    (SD-JWT)](https://datatracker.ietf.org/doc/rfc9901/) and uses a helper to decode its claims.
  • Network accessline 198
    The Credential Manager API will return a [`DigitalCredential`](https://developer.android.com/reference/androidx/credentials/DigitalCredential)
  • Network accessline 198
    The Credential Manager API will return a [`DigitalCredential`](https://developer.android.com/reference/androidx/credentials/DigitalCredential)
  • Network accessline 225
    "exp": 1775688222,       "iat": 1775083422,       "iss": "https://verifiablecredentials-pa.googleapis.com",
  • Network accessline 225
    "exp": 1775688222,       "iat": 1775083422,       "iss": "https://verifiablecredentials-pa.googleapis.com",
  • Network accessline 226
    "iat": 1775083422,       "iss": "https://verifiablecredentials-pa.googleapis.com",       "vct": "UserInfoCredential",
  • Network accessline 226
    "iat": 1775083422,       "iss": "https://verifiablecredentials-pa.googleapis.com",       "vct": "UserInfoCredential",
  • Network accessline 227
    "iss": "https://verifiablecredentials-pa.googleapis.com",
  • Network accessline 227
    "iss": "https://verifiablecredentials-pa.googleapis.com",
  • Network accessline 232
    "family_name": "Doe",       "name": "Jane Doe",       "picture": "http://example.com/janedoe/me.jpg",
  • Network accessline 232
    "family_name": "Doe",       "name": "Jane Doe",       "picture": "http://example.com/janedoe/me.jpg",
  • Network accessline 233
    "name": "Jane Doe",       "picture": "http://example.com/janedoe/me.jpg",       "hd": ""
  • Network accessline 233
    "name": "Jane Doe",       "picture": "http://example.com/janedoe/me.jpg",       "hd": ""
  • Network accessline 234
    "picture": "http://example.com/janedoe/me.jpg",
  • Network accessline 234
    "picture": "http://example.com/janedoe/me.jpg",
  • Network accessline 239
    > [!IMPORTANT] > **Important:** We highly recommend that after receiving the verified email, you trigger Credential Manager's [passkey creation](https://developer.android.com/identity/passkeys/create-passkeys).
  • Network accessline 239
    > [!IMPORTANT] > **Important:** We highly recommend that after receiving the verified email, you trigger Credential Manager's [passkey creation](https://developer.android.com/identity/passkeys/create-passkeys).
  • Network accessline 240
    > **Important:** We highly recommend that after receiving the verified email, you trigger Credential Manager's [passkey creation](https://developer.android.com/identity/passkeys/create-passkeys).
  • Network accessline 240
    > **Important:** We highly recommend that after receiving the verified email, you trigger Credential Manager's [passkey creation](https://developer.android.com/identity/passkeys/create-passkeys).
  • Network accessline 262
    - **Verify issuer** : Ensure the `iss` (issuer) field matches `https://verifiablecredentials-pa.googleapis.com`.
  • Network accessline 262
    - **Verify issuer** : Ensure the `iss` (issuer) field matches `https://verifiablecredentials-pa.googleapis.com`.
  • Network accessline 263
    - **Verify signature**: Check the signature of the SD-JWT using the public keys (JWKs) available at https://verifiablecredentials-pa.googleapis.com/.well-known/vc-public-jwks.
  • Network accessline 263
    - **Verify signature**: Check the signature of the SD-JWT using the public keys (JWKs) available at https://verifiablecredentials-pa.googleapis.com/.well-known/vc-public-jwks.
  • Network accessline 265
    > [!NOTE] > **Note:** Use a standard library (such as [@sd-jwt/sd-jwt-vc](https://datatracker.ietf.org/doc/rfc9901/) for Node.js) to perform the verification steps as outlined in the [OpenID for Verifiable
  • Network accessline 265
    > [!NOTE] > **Note:** Use a standard library (such as [@sd-jwt/sd-jwt-vc](https://datatracker.ietf.org/doc/rfc9901/) for Node.js) to perform the verification steps as outlined in the [OpenID for Verifiable
  • Network accessline 266
    > **Note:** Use a standard library (such as [@sd-jwt/sd-jwt-vc](https://datatracker.ietf.org/doc/rfc9901/) for Node.js) to perform the verification steps as outlined in the [OpenID for Verifiable
  • Network accessline 266
    > **Note:** Use a standard library (such as [@sd-jwt/sd-jwt-vc](https://datatracker.ietf.org/doc/rfc9901/) for Node.js) to perform the verification steps as outlined in the [OpenID for Verifiable
  • Network accessline 267
    > Presentations specification](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html).
  • Network accessline 267
    > Presentations specification](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html).
  • Network accessline 276
    > [!WARNING] > **Warning:** As mentioned in [Parse the response on the client](https://developer.android.com/identity/digital-credentials/email-verification-implementation#parse-response), from August 2026, the [response JSON](https://devel
  • Network accessline 276
    > [!WARNING] > **Warning:** As mentioned in [Parse the response on the client](https://developer.android.com/identity/digital-credentials/email-verification-implementation#parse-response), from August 2026, the [response JSON](https://devel
  • Network accessline 277
    > **Warning:** As mentioned in [Parse the response on the client](https://developer.android.com/identity/digital-credentials/email-verification-implementation#parse-response), from August 2026, the [response JSON](https://developer.android.
  • Network accessline 277
    > **Warning:** As mentioned in [Parse the response on the client](https://developer.android.com/identity/digital-credentials/email-verification-implementation#parse-response), from August 2026, the [response JSON](https://developer.android.
  • Network accessline 300
    An optional but highly recommended next step after provisioning an account is to immediately [create a passkey](https://developer.android.com/identity/passkeys/create-passkeys) for that account. This provides a secure,
  • Network accessline 300
    An optional but highly recommended next step after provisioning an account is to immediately [create a passkey](https://developer.android.com/identity/passkeys/create-passkeys) for that account. This provides a secure,
  • Network accessline 301
    immediately [create a passkey](https://developer.android.com/identity/passkeys/create-passkeys) for that account. This provides a secure,
  • Network accessline 301
    immediately [create a passkey](https://developer.android.com/identity/passkeys/create-passkeys) for that account. This provides a secure,
  • Network accessline 307
    For the flow to work on a [`WebView`](https://developer.android.com/reference/android/webkit/WebView), developers should implement a
  • Network accessline 307
    For the flow to work on a [`WebView`](https://developer.android.com/reference/android/webkit/WebView), developers should implement a
  • Network accessline 308
    [JavaScript bridge](https://developer.android.com/identity/sign-in/credential-manager-webview) (JS Bridge) to facilitate the handoff. This bridge
  • Network accessline 308
    [JavaScript bridge](https://developer.android.com/identity/sign-in/credential-manager-webview) (JS Bridge) to facilitate the handoff. This bridge
  • Network accessline 314
    - [Overview of verified email retrieval](https://developer.android.com/identity/digital-credentials/email-verification)
  • Network accessline 314
    - [Overview of verified email retrieval](https://developer.android.com/identity/digital-credentials/email-verification)
  • Network accessline 315
    - [Credential Manager](https://developer.android.com/identity/credential-manager)
  • Network accessline 315
    - [Credential Manager](https://developer.android.com/identity/credential-manager)

identity/verified-email/references/android/identity/digital-credentials/email-verification.md

  • Network accessline 10
    - Accounts supported - Implication of email deliverability - Comparison with [Sign in with Google](https://developer.android.com/identity/sign-in/credential-manager-siwg)
  • Network accessline 10
    - Accounts supported - Implication of email deliverability - Comparison with [Sign in with Google](https://developer.android.com/identity/sign-in/credential-manager-siwg)
  • Network accessline 12
    - Comparison with [Sign in with Google](https://developer.android.com/identity/sign-in/credential-manager-siwg)
  • Network accessline 12
    - Comparison with [Sign in with Google](https://developer.android.com/identity/sign-in/credential-manager-siwg)
  • Network accessline 16
    - [Credential Manager](https://developer.android.com/identity/credential-manager)
  • Network accessline 16
    - [Credential Manager](https://developer.android.com/identity/credential-manager)
  • Network accessline 17
    - [Digital Credentials](https://developer.android.com/identity/digital-credentials)
  • Network accessline 17
    - [Digital Credentials](https://developer.android.com/identity/digital-credentials)
  • Network accessline 18
    - [Verifiable Credentials](https://developer.android.com/identity/digital-credentials#verifiable-credentials)
  • Network accessline 18
    - [Verifiable Credentials](https://developer.android.com/identity/digital-credentials#verifiable-credentials)
  • Network accessline 23
    [View on GitHub](https://github.com/android/skills/tree/main/identity/verified-email)
  • Network accessline 23
    [View on GitHub](https://github.com/android/skills/tree/main/identity/verified-email)
  • Network accessline 27
    Use an [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate a secure, OTP-less email verification flow into your app. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/
  • Network accessline 27
    Use an [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate a secure, OTP-less email verification flow into your app. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/
  • Network accessline 63
    4. Optional: If the user is signing up for your service, prompt the user to    [create](https://developer.android.com/identity/passkeys/create-passkeys) a [passkey](https://developer.android.com/identity/passkeys) to make it easier for them
  • Network accessline 63
    4. Optional: If the user is signing up for your service, prompt the user to    [create](https://developer.android.com/identity/passkeys/create-passkeys) a [passkey](https://developer.android.com/identity/passkeys) to make it easier for them
  • Network accessline 64
    [create](https://developer.android.com/identity/passkeys/create-passkeys) a [passkey](https://developer.android.com/identity/passkeys) to make it easier for them to sign in
  • Network accessline 64
    [create](https://developer.android.com/identity/passkeys/create-passkeys) a [passkey](https://developer.android.com/identity/passkeys) to make it easier for them to sign in
  • Network accessline 85
    Users can immediately create an account with a verified email without a separate verification step. Optionally, prompt the user to add a passkey. If they opt to add a passkey, trigger the [passkey creation](https://developer.android.com/ide
  • Network accessline 85
    Users can immediately create an account with a verified email without a separate verification step. Optionally, prompt the user to add a passkey. If they opt to add a passkey, trigger the [passkey creation](https://developer.android.com/ide
  • Network accessline 86
    verification step. Optionally, prompt the user to add a passkey. If they opt to add a passkey, trigger the [passkey creation](https://developer.android.com/identity/passkeys/create-passkeys) flow. ![Using email verification during sign up, 
  • Network accessline 86
    verification step. Optionally, prompt the user to add a passkey. If they opt to add a passkey, trigger the [passkey creation](https://developer.android.com/identity/passkeys/create-passkeys) flow. ![Using email verification during sign up, 
  • Network accessline 87
    add a passkey, trigger the [passkey creation](https://developer.android.com/identity/passkeys/create-passkeys) flow.
  • Network accessline 87
    add a passkey, trigger the [passkey creation](https://developer.android.com/identity/passkeys/create-passkeys) flow.
  • Network accessline 88
    ![Using email verification during sign up, and then creating passkeys](https://developer.android.com/static/identity/digital-credentials/images/signup_ux.png) Email verification during sign up
  • Network accessline 88
    ![Using email verification during sign up, and then creating passkeys](https://developer.android.com/static/identity/digital-credentials/images/signup_ux.png) Email verification during sign up
  • Network accessline 94
    stored on their device. Additionally, suggest that they create a passkey for future use. ![Using email verification during account recovery](https://developer.android.com/static/identity/digital-credentials/images/account_recovery_ux.png) E
  • Network accessline 94
    stored on their device. Additionally, suggest that they create a passkey for future use. ![Using email verification during account recovery](https://developer.android.com/static/identity/digital-credentials/images/account_recovery_ux.png) E
  • Network accessline 96
    ![Using email verification during account recovery](https://developer.android.com/static/identity/digital-credentials/images/account_recovery_ux.png) Email verification during account recovery
  • Network accessline 96
    ![Using email verification during account recovery](https://developer.android.com/static/identity/digital-credentials/images/account_recovery_ux.png) Email verification during account recovery
  • Network accessline 100
    Protect sensitive user actions, such as changing settings or updating profile details, by requiring a quick reauthentication step. ![Using email verification during reauthentication](https://developer.android.com/static/identity/digital-cre
  • Network accessline 100
    Protect sensitive user actions, such as changing settings or updating profile details, by requiring a quick reauthentication step. ![Using email verification during reauthentication](https://developer.android.com/static/identity/digital-cre
  • Network accessline 102
    ![Using email verification during reauthentication](https://developer.android.com/static/identity/digital-credentials/images/reauthentication_ux.png) Email verification during reauthentication
  • Network accessline 102
    ![Using email verification during reauthentication](https://developer.android.com/static/identity/digital-credentials/images/reauthentication_ux.png) Email verification during reauthentication
  • Network accessline 106
    Email verification through Credential Manager only supports verification of consumer Google Accounts. [Workspace accounts](https://knowledge.workspace.google.com/admin/getting-started/set-up-google-workspace-for-your-organization) and [supe
  • Network accessline 106
    Email verification through Credential Manager only supports verification of consumer Google Accounts. [Workspace accounts](https://knowledge.workspace.google.com/admin/getting-started/set-up-google-workspace-for-your-organization) and [supe
  • Network accessline 107
    consumer Google Accounts. [Workspace accounts](https://knowledge.workspace.google.com/admin/getting-started/set-up-google-workspace-for-your-organization) and [supervised
  • Network accessline 107
    consumer Google Accounts. [Workspace accounts](https://knowledge.workspace.google.com/admin/getting-started/set-up-google-workspace-for-your-organization) and [supervised
  • Network accessline 108
    accounts](https://support.google.com/families/answer/9499054) aren't supported.
  • Network accessline 108
    accounts](https://support.google.com/families/answer/9499054) aren't supported.
  • Network accessline 117
    For more information about what verification implies, see [Digital Credentials](https://developer.android.com/identity/digital-credentials#verified).
  • Network accessline 117
    For more information about what verification implies, see [Digital Credentials](https://developer.android.com/identity/digital-credentials#verified).
  • Network accessline 118
    Credentials](https://developer.android.com/identity/digital-credentials#verified).
  • Network accessline 118
    Credentials](https://developer.android.com/identity/digital-credentials#verified).
  • Network accessline 120
    > [!NOTE] > **Note:** Apart from a user's email information, you can request other unverified fields, such as the user's given name, family name, name, and the profile picture of their Google Account. However, only the email is verified by 
  • Network accessline 120
    > [!NOTE] > **Note:** Apart from a user's email information, you can request other unverified fields, such as the user's given name, family name, name, and the profile picture of their Google Account. However, only the email is verified by 
  • Network accessline 122
    > For phone number verification, see [Verify phone numbers with digital credentials](https://developer.android.com/identity/digital-credentials/phone-number-verification). For a Firebase solution, see [Firebase Phone Number Verification](ht
  • Network accessline 122
    > For phone number verification, see [Verify phone numbers with digital credentials](https://developer.android.com/identity/digital-credentials/phone-number-verification). For a Firebase solution, see [Firebase Phone Number Verification](ht
  • Network accessline 126
    The system issues [verifiable credentials](https://developer.android.com/identity/digital-credentials#verified) (VCs) based on the user's current
  • Network accessline 126
    The system issues [verifiable credentials](https://developer.android.com/identity/digital-credentials#verified) (VCs) based on the user's current
  • Network accessline 148
    While both Digital Credentials and [Sign in with Google](https://developer.android.com/identity/sign-in/credential-manager-siwg) solutions provide a
  • Network accessline 148
    While both Digital Credentials and [Sign in with Google](https://developer.android.com/identity/sign-in/credential-manager-siwg) solutions provide a
  • Network accessline 152
    - **Registration**: The Credential Manager flow doesn't require Google registration, unlike Sign in with Google. - **Platform support**: The Credential Manager flow is an Android-only solution. - **Scopes** : Unlike Sign in with Google, whi
  • Network accessline 152
    - **Registration**: The Credential Manager flow doesn't require Google registration, unlike Sign in with Google. - **Platform support**: The Credential Manager flow is an Android-only solution. - **Scopes** : Unlike Sign in with Google, whi
  • Network accessline 154
    - **Scopes** : Unlike Sign in with Google, which can use OAuth 2.0 to request access to user data (such as Calendar or Drive through scopes), the Digital Credentials API is strictly for retrieving verified identity attributes. It can't be u
  • Network accessline 154
    - **Scopes** : Unlike Sign in with Google, which can use OAuth 2.0 to request access to user data (such as Calendar or Drive through scopes), the Digital Credentials API is strictly for retrieving verified identity attributes. It can't be u
  • Network accessline 158
    To implement this feature in your app, see the [Implementation guide](https://developer.android.com/identity/digital-credentials/email-verification-implementation).
  • Network accessline 158
    To implement this feature in your app, see the [Implementation guide](https://developer.android.com/identity/digital-credentials/email-verification-implementation).

identity/verified-email/references/android/identity/digital-credentials/index.md

  • Network accessline 2
    users can use to provide information about themselves, and use to authenticate or authorize themselves. Digital credentials are based on the [open W3C Digital Credentials API industry standard](https://www.w3.org/TR/digital-credentials/). O
  • Network accessline 2
    users can use to provide information about themselves, and use to authenticate or authorize themselves. Digital credentials are based on the [open W3C Digital Credentials API industry standard](https://www.w3.org/TR/digital-credentials/). O
  • Network accessline 3
    or authorize themselves. Digital credentials are based on the [open W3C Digital Credentials API industry standard](https://www.w3.org/TR/digital-credentials/). On Android, this is implemented through [Credential Manager's](https://developer
  • Network accessline 3
    or authorize themselves. Digital credentials are based on the [open W3C Digital Credentials API industry standard](https://www.w3.org/TR/digital-credentials/). On Android, this is implemented through [Credential Manager's](https://developer
  • Network accessline 4
    Credentials API industry standard](https://www.w3.org/TR/digital-credentials/). On Android, this is
  • Network accessline 4
    Credentials API industry standard](https://www.w3.org/TR/digital-credentials/). On Android, this is
  • Network accessline 5
    implemented through [Credential Manager's](https://developer.android.com/identity/credential-manager) [Digital Credentials API](https://developer.android.com/reference/kotlin/androidx/credentials/DigitalCredential).
  • Network accessline 5
    implemented through [Credential Manager's](https://developer.android.com/identity/credential-manager) [Digital Credentials API](https://developer.android.com/reference/kotlin/androidx/credentials/DigitalCredential).
  • Network accessline 6
    ![Image showing the flow of using a digital credential](https://developer.android.com/static/identity/digital-credentials/images/digital_credentials.png) **Figure 1.** Using a digital credential in a sample app.
  • Network accessline 6
    ![Image showing the flow of using a digital credential](https://developer.android.com/static/identity/digital-credentials/images/digital_credentials.png) **Figure 1.** Using a digital credential in a sample app.
  • Network accessline 23
    - **Accept government-issued IDs**: Apps can request and use official government document attributes, for flows including age verification, account recovery, Know-Your-Customer (KYC) process. - **Verify phone numbers** : Apps can use the AP
  • Network accessline 23
    - **Accept government-issued IDs**: Apps can request and use official government document attributes, for flows including age verification, account recovery, Know-Your-Customer (KYC) process. - **Verify phone numbers** : Apps can use the AP
  • Network accessline 24
    - **Verify phone numbers** : Apps can use the API for phone number verification, by exchanging digital credentials derived from the phone's SIM card directly with the user's carrier. This removes the need for one-time passwords (OTPs), impr
  • Network accessline 24
    - **Verify phone numbers** : Apps can use the API for phone number verification, by exchanging digital credentials derived from the phone's SIM card directly with the user's carrier. This removes the need for one-time passwords (OTPs), impr
  • Network accessline 25
    - **Verify email addresses** : The API lets your app retrieve verified emails directly from the user's device, removing the need for OTPs, for frictionless sign-up, sign-in, and account recovery. For more information, see the [email verific
  • Network accessline 25
    - **Verify email addresses** : The API lets your app retrieve verified emails directly from the user's device, removing the need for OTPs, for frictionless sign-up, sign-in, and account recovery. For more information, see the [email verific
  • Network accessline 33
    - **Issuers** : Issuers are apps that securely create and [issue](https://developer.android.com/identity/digital-credentials/credential-issuer/issue-credentials) credentials.
  • Network accessline 33
    - **Issuers** : Issuers are apps that securely create and [issue](https://developer.android.com/identity/digital-credentials/credential-issuer/issue-credentials) credentials.
  • Network accessline 34
    - **Holders (wallets)** : Holders are apps on a user's device that store credentials. They should be able to share these credentials with requesting apps through a [presentation](https://developer.android.com/identity/digital-credentials/cr
  • Network accessline 34
    - **Holders (wallets)** : Holders are apps on a user's device that store credentials. They should be able to share these credentials with requesting apps through a [presentation](https://developer.android.com/identity/digital-credentials/cr
  • Network accessline 65
    ![Image showing the UX variants of digital credentials](https://developer.android.com/static/identity/digital-credentials/images/digital_credentials_ux_variants.png) **Figure 2.** The UX variants for digital credentials for email verificati
  • Network accessline 65
    ![Image showing the UX variants of digital credentials](https://developer.android.com/static/identity/digital-credentials/images/digital_credentials_ux_variants.png) **Figure 2.** The UX variants for digital credentials for email verificati
  • Network accessline 72
    - **Sharing** : Digital credentials are requested using the [OpenID4VP   standard](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#name-introduction).
  • Network accessline 72
    - **Sharing** : Digital credentials are requested using the [OpenID4VP   standard](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#name-introduction).
  • Network accessline 73
    standard](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#name-introduction).
  • Network accessline 73
    standard](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html#name-introduction).
  • Network accessline 74
    - **Issuance** : Digital credentials are issued using the [OpenID4VCI   standard](https://openid.github.io/OpenID4VCI/openid-4-verifiable-credential-issuance-1_1-wg-draft.html). - **Credential storage format** : Digital credentials are repr
  • Network accessline 74
    - **Issuance** : Digital credentials are issued using the [OpenID4VCI   standard](https://openid.github.io/OpenID4VCI/openid-4-verifiable-credential-issuance-1_1-wg-draft.html). - **Credential storage format** : Digital credentials are repr
  • Network accessline 75
    standard](https://openid.github.io/OpenID4VCI/openid-4-verifiable-credential-issuance-1_1-wg-draft.html).
  • Network accessline 75
    standard](https://openid.github.io/OpenID4VCI/openid-4-verifiable-credential-issuance-1_1-wg-draft.html).
  • Network accessline 76
    - **Credential storage format** : Digital credentials are represented in standardized formats maintained by different standards bodies, primarily the following:   - IETF [selective disclosure of JSON web tokens (sd-jwt)](https://datatracker
  • Network accessline 76
    - **Credential storage format** : Digital credentials are represented in standardized formats maintained by different standards bodies, primarily the following:   - IETF [selective disclosure of JSON web tokens (sd-jwt)](https://datatracker
  • Network accessline 77
    - IETF [selective disclosure of JSON web tokens (sd-jwt)](https://datatracker.ietf.org/doc/draft-ietf-oauth-selective-disclosure-jwt/) VC
  • Network accessline 77
    - IETF [selective disclosure of JSON web tokens (sd-jwt)](https://datatracker.ietf.org/doc/draft-ietf-oauth-selective-disclosure-jwt/) VC
  • Network accessline 78
    - ISO [MDoc](https://www.iso.org/standard/69084.html)
  • Network accessline 78
    - ISO [MDoc](https://www.iso.org/standard/69084.html)
  • Network accessline 92
    1. **Install the sample apps on the Android-powered device** : Use one of the following methods to install the apps on your first device:    - **Use the prebuilt APKs** :      - **Download the holder app** : Sign in to your GitHub account, 
  • Network accessline 92
    1. **Install the sample apps on the Android-powered device** : Use one of the following methods to install the apps on your first device:    - **Use the prebuilt APKs** :      - **Download the holder app** : Sign in to your GitHub account, 
  • Network accessline 93
    - **Use the prebuilt APKs** :      - **Download the holder app** : Sign in to your GitHub account, navigate to the [holder app GitHub Actions page](https://github.com/digitalcredentialsdev/CMWallet/actions), select the latest successful bui
  • Network accessline 93
    - **Use the prebuilt APKs** :      - **Download the holder app** : Sign in to your GitHub account, navigate to the [holder app GitHub Actions page](https://github.com/digitalcredentialsdev/CMWallet/actions), select the latest successful bui
  • Network accessline 94
    - **Download the holder app** : Sign in to your GitHub account, navigate to the [holder app GitHub Actions page](https://github.com/digitalcredentialsdev/CMWallet/actions), select the latest successful build, and download the `app-debug.apk
  • Network accessline 94
    - **Download the holder app** : Sign in to your GitHub account, navigate to the [holder app GitHub Actions page](https://github.com/digitalcredentialsdev/CMWallet/actions), select the latest successful build, and download the `app-debug.apk
  • Network accessline 95
    - **Download the verifier app** : For the sample verifier app, get the APK from the [Identity samples repository](https://github.com/android/identity-samples/actions). Then, install the APK on your Android-powered device. This app is called
  • Network accessline 95
    - **Download the verifier app** : For the sample verifier app, get the APK from the [Identity samples repository](https://github.com/android/identity-samples/actions). Then, install the APK on your Android-powered device. This app is called
  • Network accessline 102
    > [!NOTE] > **Note:** You can also initiate the request from a web browser on another device by navigating to <https://digital-credentials.dev/> and selecting **Request Credentials (OpenID4VP 1.0)**.
  • Network accessline 102
    > [!NOTE] > **Note:** You can also initiate the request from a web browser on another device by navigating to <https://digital-credentials.dev/> and selecting **Request Credentials (OpenID4VP 1.0)**.
  • Network accessline 103
    > **Note:** You can also initiate the request from a web browser on another device by navigating to <https://digital-credentials.dev/> and selecting **Request Credentials (OpenID4VP 1.0)**.
  • Network accessline 103
    > **Note:** You can also initiate the request from a web browser on another device by navigating to <https://digital-credentials.dev/> and selecting **Request Credentials (OpenID4VP 1.0)**.
  • Network accessline 107
    - For more information about issuing digital credentials, see the [issuer   guide](https://developer.android.com/identity/digital-credentials/credential-issuer/issue-credentials).
  • Network accessline 107
    - For more information about issuing digital credentials, see the [issuer   guide](https://developer.android.com/identity/digital-credentials/credential-issuer/issue-credentials).
  • Network accessline 108
    guide](https://developer.android.com/identity/digital-credentials/credential-issuer/issue-credentials).
  • Network accessline 108
    guide](https://developer.android.com/identity/digital-credentials/credential-issuer/issue-credentials).
  • Network accessline 109
    - For more information about holder apps, see the [holder guide](https://developer.android.com/identity/digital-credentials/credential-holder/present-credentials).
  • Network accessline 109
    - For more information about holder apps, see the [holder guide](https://developer.android.com/identity/digital-credentials/credential-holder/present-credentials).
  • Network accessline 110
    - For more information about verifying users based on digital credentials, see the [verifier guide](https://developer.android.com/identity/digital-credentials/credential-verifier/request-credential).
  • Network accessline 110
    - For more information about verifying users based on digital credentials, see the [verifier guide](https://developer.android.com/identity/digital-credentials/credential-verifier/request-credential).
  • Network accessline 112
    credentials on the web](https://developer.chrome.com/blog/digital-credentials-api-shipped).
  • Network accessline 112
    credentials on the web](https://developer.chrome.com/blog/digital-credentials-api-shipped).

identity/verified-email/references/android/identity/passkeys/create-passkeys.md

  • Network accessline 10
    > [!TIP] > **Tip:** While designing authentication flows with passkeys, make sure that you follow the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 10
    > [!TIP] > **Tip:** While designing authentication flows with passkeys, make sure that you follow the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 11
    > **Tip:** While designing authentication flows with passkeys, make sure that you follow the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 11
    > **Tip:** While designing authentication flows with passkeys, make sure that you follow the [UX guidelines for passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 13
    ![Passkeys are stored in a credential provider and public keys are stored on the app server](https://developer.android.com/static/identity/passkeys/images/create-passkeys.png) **Figure 1:**Creation of passkeys
  • Network accessline 13
    ![Passkeys are stored in a credential provider and public keys are stored on the app server](https://developer.android.com/static/identity/passkeys/images/create-passkeys.png) **Figure 1:**Creation of passkeys
  • Network accessline 17
    Make sure that you have set up [Digital Asset Links](https://developer.android.com/identity/credential-manager/prerequisites) and that you target
  • Network accessline 17
    Make sure that you have set up [Digital Asset Links](https://developer.android.com/identity/credential-manager/prerequisites) and that you target
  • Network accessline 22
    This guide focuses on the changes required in your [relying party client app](https://developer.android.com/identity/credential-manager#authentication-terminology)
  • Network accessline 22
    This guide focuses on the changes required in your [relying party client app](https://developer.android.com/identity/credential-manager#authentication-terminology)
  • Network accessline 23
    to create a passkey, and gives a brief overview of the [relying party app server](https://developer.android.com/identity/credential-manager#authentication-terminology) implementation. To learn more about the server-side integration, see [Se
  • Network accessline 23
    to create a passkey, and gives a brief overview of the [relying party app server](https://developer.android.com/identity/credential-manager#authentication-terminology) implementation. To learn more about the server-side integration, see [Se
  • Network accessline 24
    server](https://developer.android.com/identity/credential-manager#authentication-terminology) implementation. To learn more about the server-side integration, see
  • Network accessline 24
    server](https://developer.android.com/identity/credential-manager#authentication-terminology) implementation. To learn more about the server-side integration, see
  • Network accessline 25
    [Server-side passkey registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 25
    [Server-side passkey registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 27
    1. [**Add dependencies to your app**](https://developer.android.com/identity/passkeys/create-passkeys#add-dependencies): Add the required Credential Manager libraries.
  • Network accessline 27
    1. [**Add dependencies to your app**](https://developer.android.com/identity/passkeys/create-passkeys#add-dependencies): Add the required Credential Manager libraries.
  • Network accessline 28
    2. [**Instantiate Credential Manager**](https://developer.android.com/identity/passkeys/create-passkeys#instantiate): Create a Credential Manager instance.
  • Network accessline 28
    2. [**Instantiate Credential Manager**](https://developer.android.com/identity/passkeys/create-passkeys#instantiate): Create a Credential Manager instance.
  • Network accessline 29
    3. [**Get credential creation options from the app server**](https://developer.android.com/identity/passkeys/create-passkeys#get-options): From your app server, send the client app the details required to create the passkey, such as informa
  • Network accessline 29
    3. [**Get credential creation options from the app server**](https://developer.android.com/identity/passkeys/create-passkeys#get-options): From your app server, send the client app the details required to create the passkey, such as informa
  • Network accessline 30
    4. [**Request a passkey**](https://developer.android.com/identity/passkeys/create-passkeys#request-passkey): In your app, use the details received from the app server to create a [`GetPublicKeyCredentialOption`](https://developer.android.co
  • Network accessline 30
    4. [**Request a passkey**](https://developer.android.com/identity/passkeys/create-passkeys#request-passkey): In your app, use the details received from the app server to create a [`GetPublicKeyCredentialOption`](https://developer.android.co
  • Network accessline 31
    5. [**Handle the passkey creation response**](https://developer.android.com/identity/passkeys/create-passkeys#handle-response): When you receive the credentials on your client app, you must encode, serialize and then send the public key to 
  • Network accessline 31
    5. [**Handle the passkey creation response**](https://developer.android.com/identity/passkeys/create-passkeys#handle-response): When you receive the credentials on your client app, you must encode, serialize and then send the public key to 
  • Network accessline 32
    6. [**Verify and save the public key on the server**](https://developer.android.com/identity/passkeys/create-passkeys#verify): Complete the server-side steps to verify the origin of the credential and then save the public key.
  • Network accessline 32
    6. [**Verify and save the public key on the server**](https://developer.android.com/identity/passkeys/create-passkeys#verify): Complete the server-side steps to verify the origin of the credential and then save the public key.
  • Network accessline 33
    7. [**Notify the user**](https://developer.android.com/identity/passkeys/create-passkeys#notify): Notify the user that their passkey has been created.
  • Network accessline 33
    7. [**Notify the user**](https://developer.android.com/identity/passkeys/create-passkeys#notify): Notify the user that their passkey has been created.
  • Network accessline 35
    > [!TIP] > **Tip:** To enhance the user experience during sign up, add functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing 
  • Network accessline 35
    > [!TIP] > **Tip:** To enhance the user experience during sign up, add functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing 
  • Network accessline 36
    > **Tip:** To enhance the user experience during sign up, add functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing accounts 
  • Network accessline 36
    > **Tip:** To enhance the user experience during sign up, add functionality to [restore credentials](https://developer.android.com/identity/sign-in/restore-credentials) on a new device to let users seamlessly set up their existing accounts 
  • Network accessline 37
    > credential fields](https://developer.android.com/identity/passkeys/create-passkeys#suppress-autofill).
  • Network accessline 37
    > credential fields](https://developer.android.com/identity/passkeys/create-passkeys#suppress-autofill).
  • Network accessline 61
    > [!NOTE] > **Note:** Use the latest available versions of the dependencies. Versions of [`androidx.credentials`](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade) earlier than version 1.2 throw an `Unsuppor
  • Network accessline 61
    > [!NOTE] > **Note:** Use the latest available versions of the dependencies. Versions of [`androidx.credentials`](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade) earlier than version 1.2 throw an `Unsuppor
  • Network accessline 62
    > **Note:** Use the latest available versions of the dependencies. Versions of [`androidx.credentials`](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade) earlier than version 1.2 throw an `UnsupportedOperati
  • Network accessline 62
    > **Note:** Use the latest available versions of the dependencies. Versions of [`androidx.credentials`](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade) earlier than version 1.2 throw an `UnsupportedOperati
  • Network accessline 79
    information required to create a passkey, such as information about the user, the app, and additional configuration properties. To learn more, see [Server side passkey registration](https://developers.google.com/identity/passkeys/developer-
  • Network accessline 79
    information required to create a passkey, such as information about the user, the app, and additional configuration properties. To learn more, see [Server side passkey registration](https://developers.google.com/identity/passkeys/developer-
  • Network accessline 81
    side passkey registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 81
    side passkey registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration).
  • Network accessline 84
    server. These are usually represented in JSON format. To learn more about how this decoding is done for web clients, see [Encoding and Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_a
  • Network accessline 84
    server. These are usually represented in JSON format. To learn more about how this decoding is done for web clients, see [Encoding and Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_a
  • Network accessline 85
    this decoding is done for web clients, see [Encoding and Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_and_decoding). For Android client apps, you must handle the decoding separately
  • Network accessline 85
    this decoding is done for web clients, see [Encoding and Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_and_decoding). For Android client apps, you must handle the decoding separately
  • Network accessline 86
    Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_and_decoding). For Android client apps, you must handle the decoding
  • Network accessline 86
    Decoding](https://developers.google.com/identity/passkeys/developer-guides/server-registration#encoding_and_decoding). For Android client apps, you must handle the decoding
  • Network accessline 135
    - `displayName`: An optional, user-friendly name for the account intended for display in the account selector. - `authenticatorSelection`: Details about the device that will be used for authentication.   - `authenticatorAttachment`: Indicat
  • Network accessline 135
    - `displayName`: An optional, user-friendly name for the account intended for display in the account selector. - `authenticatorSelection`: Details about the device that will be used for authentication.   - `authenticatorAttachment`: Indicat
  • Network accessline 136
    - `authenticatorSelection`: Details about the device that will be used for authentication.   - `authenticatorAttachment`: Indicates the preferred [authenticator](https://www.w3.org/TR/webauthn/#authenticator). The possible values are as fol
  • Network accessline 136
    - `authenticatorSelection`: Details about the device that will be used for authentication.   - `authenticatorAttachment`: Indicates the preferred [authenticator](https://www.w3.org/TR/webauthn/#authenticator). The possible values are as fol
  • Network accessline 137
    - `authenticatorAttachment`: Indicates the preferred [authenticator](https://www.w3.org/TR/webauthn/#authenticator). The possible values are as follows:
  • Network accessline 137
    - `authenticatorAttachment`: Indicates the preferred [authenticator](https://www.w3.org/TR/webauthn/#authenticator). The possible values are as follows:
  • Network accessline 145
    - `required`: Use this value if invoking a user verification method available on the device is required.     - `discouraged`: Use this value if using a user verification method is discouraged.          To learn more about `userVerification`
  • Network accessline 145
    - `required`: Use this value if invoking a user verification method available on the device is required.     - `discouraged`: Use this value if using a user verification method is discouraged.          To learn more about `userVerification`
  • Network accessline 146
    - `discouraged`: Use this value if using a user verification method is discouraged.          To learn more about `userVerification`, see [userVerification deep dive](https://web.dev/articles/webauthn-user-verification). - `excludeCredential
  • Network accessline 146
    - `discouraged`: Use this value if using a user verification method is discouraged.          To learn more about `userVerification`, see [userVerification deep dive](https://web.dev/articles/webauthn-user-verification). - `excludeCredential
  • Network accessline 147
    To learn more about `userVerification`, see [userVerification deep dive](https://web.dev/articles/webauthn-user-verification).
  • Network accessline 147
    To learn more about `userVerification`, see [userVerification deep dive](https://web.dev/articles/webauthn-user-verification).
  • Network accessline 148
    - `excludeCredentials`: List credential IDs in an [array](https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials) to prevent the creation of a duplicate passkey if one already exists with the same credenti
  • Network accessline 148
    - `excludeCredentials`: List credential IDs in an [array](https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials) to prevent the creation of a duplicate passkey if one already exists with the same credenti
  • Network accessline 158
    - `requestJson`: The credential creation options sent by the app server. - `preferImmediatelyAvailableCredentials`: This is an optional Boolean field that defines whether to only use locally-available or credential provider-synced credentia
  • Network accessline 158
    - `requestJson`: The credential creation options sent by the app server. - `preferImmediatelyAvailableCredentials`: This is an optional Boolean field that defines whether to only use locally-available or credential provider-synced credentia
  • Network accessline 159
    - `preferImmediatelyAvailableCredentials`: This is an optional Boolean field that defines whether to only use locally-available or credential provider-synced credentials to fulfill the request, instead of credentials from security keys or [
  • Network accessline 159
    - `preferImmediatelyAvailableCredentials`: This is an optional Boolean field that defines whether to only use locally-available or credential provider-synced credentials to fulfill the request, instead of credentials from security keys or [
  • Network accessline 160
    - `false` (default): Use this value if the call to Credential Manager was triggered by an explicit user action.   - `true`: Use this value if Credential Manager is opportunistically called, such as when first opening the app.        If you 
  • Network accessline 160
    - `false` (default): Use this value if the call to Credential Manager was triggered by an explicit user action.   - `true`: Use this value if Credential Manager is opportunistically called, such as when first opening the app.        If you 
  • Network accessline 161
    - `true`: Use this value if Credential Manager is opportunistically called, such as when first opening the app.        If you set the value to `true` and there are no immediately available credentials, Credential Manager won't show any UI a
  • Network accessline 161
    - `true`: Use this value if Credential Manager is opportunistically called, such as when first opening the app.        If you set the value to `true` and there are no immediately available credentials, Credential Manager won't show any UI a
  • Network accessline 162
    If you set the value to `true` and there are no immediately available credentials, Credential Manager won't show any UI and the request will fail immediately, returning NoCredentialException for get requests and [`CreateCredentialNoCreateOp
  • Network accessline 162
    If you set the value to `true` and there are no immediately available credentials, Credential Manager won't show any UI and the request will fail immediately, returning NoCredentialException for get requests and [`CreateCredentialNoCreateOp
  • Network accessline 163
    - `origin`: This field is automatically set for Android apps. For browsers and similarly privileged apps that need to set `origin`, see [Make Credential   Manager calls on behalf of other parties for privileged apps](https://developer.andro
  • Network accessline 163
    - `origin`: This field is automatically set for Android apps. For browsers and similarly privileged apps that need to set `origin`, see [Make Credential   Manager calls on behalf of other parties for privileged apps](https://developer.andro
  • Network accessline 164
    Manager calls on behalf of other parties for privileged apps](https://developer.android.com/training/sign-in/privileged-apps).
  • Network accessline 164
    Manager calls on behalf of other parties for privileged apps](https://developer.android.com/training/sign-in/privileged-apps).
  • Network accessline 165
    - `isConditional`: This is an optional field that defaults to `false`. For more information, see [Automatically create a passkey](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade).
  • Network accessline 165
    - `isConditional`: This is an optional field that defaults to `false`. For more information, see [Automatically create a passkey](https://developer.android.com/identity/passkeys/create-passkeys#automatic-upgrade).
  • Network accessline 179
    background and store it in the user's credential provider, such as Google Password Manager. For an example of how this is implemented, see the [public sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/co
  • Network accessline 179
    background and store it in the user's credential provider, such as Google Password Manager. For an example of how this is implemented, see the [public sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/co
  • Network accessline 180
    Password Manager. For an example of how this is implemented, see the [public sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/com/authentication/shrine/ui/AuthenticationScreen.kt#L98). ![An example of t
  • Network accessline 180
    Password Manager. For an example of how this is implemented, see the [public sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/com/authentication/shrine/ui/AuthenticationScreen.kt#L98). ![An example of t
  • Network accessline 181
    sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/com/authentication/shrine/ui/AuthenticationScreen.kt#L98).
  • Network accessline 181
    sample](https://github.com/android/identity-samples/blob/main/Shrine/app/src/main/java/com/authentication/shrine/ui/AuthenticationScreen.kt#L98).
  • Network accessline 182
    ![An example of the notification Google Password Manager shows after passkey creation](https://developer.android.com/static/identity/passkeys/images/conditional-create-gpm.svg) **Figure 2:**Google Password Manager notification
  • Network accessline 182
    ![An example of the notification Google Password Manager shows after passkey creation](https://developer.android.com/static/identity/passkeys/images/conditional-create-gpm.svg) **Figure 2:**Google Password Manager notification
  • Network accessline 192
    The response after you successfully call `createCredential()` is a [PublicKeyCredential](https://developer.android.com/jetpack/androidx/releases/credentials) object.
  • Network accessline 192
    The response after you successfully call `createCredential()` is a [PublicKeyCredential](https://developer.android.com/jetpack/androidx/releases/credentials) object.
  • Network accessline 193
    [PublicKeyCredential](https://developer.android.com/jetpack/androidx/releases/credentials) object.
  • Network accessline 193
    [PublicKeyCredential](https://developer.android.com/jetpack/androidx/releases/credentials) object.
  • Network accessline 244
    On the app server, you must verify the public key credential and then [save the public key](https://web.dev/articles/passkey-registration#save-credential).
  • Network accessline 244
    On the app server, you must verify the public key credential and then [save the public key](https://web.dev/articles/passkey-registration#save-credential).
  • Network accessline 245
    public key](https://web.dev/articles/passkey-registration#save-credential).
  • Network accessline 245
    public key](https://web.dev/articles/passkey-registration#save-credential).
  • Network accessline 280
    > [!NOTE] > **Note:** When you save the passkey on the app server, make sure that you save the Authenticator Attestation Globally Unique Identifier ([AAGUID](https://web.dev/articles/webauthn-aaguid)) from the client data. The AAGUID is a u
  • Network accessline 280
    > [!NOTE] > **Note:** When you save the passkey on the app server, make sure that you save the Authenticator Attestation Globally Unique Identifier ([AAGUID](https://web.dev/articles/webauthn-aaguid)) from the client data. The AAGUID is a u
  • Network accessline 281
    > **Note:** When you save the passkey on the app server, make sure that you save the Authenticator Attestation Globally Unique Identifier ([AAGUID](https://web.dev/articles/webauthn-aaguid)) from the client data. The AAGUID is a unique numb
  • Network accessline 281
    > **Note:** When you save the passkey on the app server, make sure that you save the Authenticator Attestation Globally Unique Identifier ([AAGUID](https://web.dev/articles/webauthn-aaguid)) from the client data. The AAGUID is a unique numb
  • Network accessline 285
    After the passkey is successfully created, notify your users about the passkey and inform them that they can manage their passkeys from their credential provider app or from [within the app settings](https://developer.android.com/identity/p
  • Network accessline 285
    After the passkey is successfully created, notify your users about the passkey and inform them that they can manage their passkeys from their credential provider app or from [within the app settings](https://developer.android.com/identity/p
  • Network accessline 286
    and inform them that they can manage their passkeys from their credential provider app or from [within the app settings](https://developer.android.com/identity/passkeys/manage-passkeys). Notify users by using a custom dialog, notification, 
  • Network accessline 286
    and inform them that they can manage their passkeys from their credential provider app or from [within the app settings](https://developer.android.com/identity/passkeys/manage-passkeys). Notify users by using a custom dialog, notification, 
  • Network accessline 287
    provider app or from [within the app settings](https://developer.android.com/identity/passkeys/manage-passkeys). Notify users by using a
  • Network accessline 287
    provider app or from [within the app settings](https://developer.android.com/identity/passkeys/manage-passkeys). Notify users by using a
  • Network accessline 301
    To allow users to seamlessly log into their accounts on a new device, implement the [Restore Credentials](https://developer.android.com/identity/sign-in/restore-credentials) functionality. Adding restore credentials with
  • Network accessline 301
    To allow users to seamlessly log into their accounts on a new device, implement the [Restore Credentials](https://developer.android.com/identity/sign-in/restore-credentials) functionality. Adding restore credentials with
  • Network accessline 302
    the [Restore Credentials](https://developer.android.com/identity/sign-in/restore-credentials) functionality. Adding restore credentials with
  • Network accessline 302
    the [Restore Credentials](https://developer.android.com/identity/sign-in/restore-credentials) functionality. Adding restore credentials with
  • Network accessline 325
    - [Sign in with passkeys](https://developer.android.com/identity/passkeys/sign-in-with-passkeys)
  • Network accessline 325
    - [Sign in with passkeys](https://developer.android.com/identity/passkeys/sign-in-with-passkeys)
  • Network accessline 326
    - [Manage passkeys](https://developer.android.com/identity/passkeys/manage-passkeys)
  • Network accessline 326
    - [Manage passkeys](https://developer.android.com/identity/passkeys/manage-passkeys)
  • Network accessline 327
    - [Understand passkey user experience flows](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys)
  • Network accessline 327
    - [Understand passkey user experience flows](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys)

identity/verified-email/references/android/identity/sign-in/credential-manager-webview.md

  • Network accessline 1
    This document describes how to integrate the Credential Manager API with an Android app that uses WebView. Credential Manager is supported natively in the `android.webkit.WebView` library in [version 1.12.0](https://developer.android.com/je
  • Network accessline 1
    This document describes how to integrate the Credential Manager API with an Android app that uses WebView. Credential Manager is supported natively in the `android.webkit.WebView` library in [version 1.12.0](https://developer.android.com/je
  • Network accessline 3
    `android.webkit.WebView` library in [version 1.12.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.12.0) and later.
  • Network accessline 3
    `android.webkit.WebView` library in [version 1.12.0](https://developer.android.com/jetpack/androidx/releases/webkit#1.12.0) and later.
  • Network accessline 16
    You will also need to associate your app with a website that your app owns using digital asset linking. For more information, see [adding digital asset linking](https://developer.android.com/identity/credential-manager/prerequisites).
  • Network accessline 16
    You will also need to associate your app with a website that your app owns using digital asset linking. For more information, see [adding digital asset linking](https://developer.android.com/identity/credential-manager/prerequisites).
  • Network accessline 18
    [adding digital asset linking](https://developer.android.com/identity/credential-manager/prerequisites).
  • Network accessline 18
    [adding digital asset linking](https://developer.android.com/identity/credential-manager/prerequisites).
  • Network accessline 28
    setContent {                 // Put your webview link here.                 val url = "https://project-sesame-426206.appspot.com/passkey-signup"
  • Network accessline 28
    setContent {                 // Put your webview link here.                 val url = "https://project-sesame-426206.appspot.com/passkey-signup"
  • Network accessline 29
    // Put your webview link here.                 val url = "https://project-sesame-426206.appspot.com/passkey-signup"                 AndroidView(
  • Network accessline 29
    // Put your webview link here.                 val url = "https://project-sesame-426206.appspot.com/passkey-signup"                 AndroidView(
  • Network accessline 30
    val url = "https://project-sesame-426206.appspot.com/passkey-signup"
  • Network accessline 30
    val url = "https://project-sesame-426206.appspot.com/passkey-signup"
  • Network accessline 69
    To learn how to build Web integration see [Create a passkey for passwordless logins](https://web.dev/passkey-registration/).
  • Network accessline 69
    To learn how to build Web integration see [Create a passkey for passwordless logins](https://web.dev/passkey-registration/).
  • Network accessline 70
    [Create a passkey for passwordless logins](https://web.dev/passkey-registration/).
  • Network accessline 70
    [Create a passkey for passwordless logins](https://web.dev/passkey-registration/).
  • Network accessline 71
    You can also reference the [demo site source](https://github.com/deephand/webauthn-in-webview).
  • Network accessline 71
    You can also reference the [demo site source](https://github.com/deephand/webauthn-in-webview).
  • Network accessline 84
    Verify the implementation corresponds to the [UX recommendations](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).
  • Network accessline 84
    Verify the implementation corresponds to the [UX recommendations](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys).

jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md

  • Network accessline 44
    |---|---| |   | ![Illustration of a horizontal main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/main-axis.png) |
  • Network accessline 44
    |---|---| |   | ![Illustration of a horizontal main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/main-axis.png) |
  • Network accessline 45
    |   | ![Illustration of a horizontal main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/main-axis.png) |
  • Network accessline 45
    |   | ![Illustration of a horizontal main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/main-axis.png) |
  • Network accessline 46
    | `Start` | ![Items aligned to the start of the main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-start.png) |
  • Network accessline 46
    | `Start` | ![Items aligned to the start of the main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-start.png) |
  • Network accessline 47
    | `Center` | ![Items aligned to the center of the main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-center.png) |
  • Network accessline 47
    | `Center` | ![Items aligned to the center of the main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-center.png) |
  • Network accessline 48
    | `End` | ![Items aligned to the end of the main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-end.png) |
  • Network accessline 48
    | `End` | ![Items aligned to the end of the main axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-end.png) |
  • Network accessline 49
    | `SpaceBetween` | ![Items distributed along the main axis with space between them.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-spacebetween.png) |
  • Network accessline 49
    | `SpaceBetween` | ![Items distributed along the main axis with space between them.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-spacebetween.png) |
  • Network accessline 50
    | `SpaceAround` | ![Items distributed along the main axis with space around them.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-spacearound.png) |
  • Network accessline 50
    | `SpaceAround` | ![Items distributed along the main axis with space around them.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-spacearound.png) |
  • Network accessline 51
    | `SpaceEvenly` | ![Items distributed along the main axis with space evenly around them.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-spaceevenly.png) |
  • Network accessline 51
    | `SpaceEvenly` | ![Items distributed along the main axis with space evenly around them.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/mainaxis-spaceevenly.png) |
  • Network accessline 55
    Use `alignItems` to align items along the cross axis within a single line. This behavior can be overridden by individual items using the [`alignSelf` modifier](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-b
  • Network accessline 55
    Use `alignItems` to align items along the cross axis within a single line. This behavior can be overridden by individual items using the [`alignSelf` modifier](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-b
  • Network accessline 57
    [`alignSelf` modifier](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#item-alignment).
  • Network accessline 57
    [`alignSelf` modifier](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#item-alignment).
  • Network accessline 61
    |---|---|---|---|---|---| | ![Illustration of a vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/crossaxis.png) | ![Items aligned to the start of the cross axis.](https://develope
  • Network accessline 61
    |---|---|---|---|---|---| | ![Illustration of a vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/crossaxis.png) | ![Items aligned to the start of the cross axis.](https://develope
  • Network accessline 62
    | ![Illustration of a vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/crossaxis.png) | ![Items aligned to the start of the cross axis.](https://developer.android.com/static/devel
  • Network accessline 62
    | ![Illustration of a vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/crossaxis.png) | ![Items aligned to the start of the cross axis.](https://developer.android.com/static/devel
  • Network accessline 70
    |---|---|---|---|---|---|---| | ![Illustration of a vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/crossaxis.png) | ![Multiple lines of items aligned to the start of the cross a
  • Network accessline 70
    |---|---|---|---|---|---|---| | ![Illustration of a vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/crossaxis.png) | ![Multiple lines of items aligned to the start of the cross a
  • Network accessline 71
    | ![Illustration of a vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/crossaxis.png) | ![Multiple lines of items aligned to the start of the cross axis.](https://developer.androi
  • Network accessline 71
    | ![Illustration of a vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/crossaxis.png) | ![Multiple lines of items aligned to the start of the cross axis.](https://developer.androi
  • Network accessline 80
    |---|---| | **`FlexWrap` value** | **Example using direction `Row`** | | `NoWrap` (default): Prevents items from wrapping. Items overflow if the main size is insufficient. | ![Items in a single line overflowing the container because wrappin
  • Network accessline 80
    |---|---| | **`FlexWrap` value** | **Example using direction `Row`** | | `NoWrap` (default): Prevents items from wrapping. Items overflow if the main size is insufficient. | ![Items in a single line overflowing the container because wrappin
  • Network accessline 81
    | **`FlexWrap` value** | **Example using direction `Row`** | | `NoWrap` (default): Prevents items from wrapping. Items overflow if the main size is insufficient. | ![Items in a single line overflowing the container because wrapping is disab
  • Network accessline 81
    | **`FlexWrap` value** | **Example using direction `Row`** | | `NoWrap` (default): Prevents items from wrapping. Items overflow if the main size is insufficient. | ![Items in a single line overflowing the container because wrapping is disab
  • Network accessline 82
    | `NoWrap` (default): Prevents items from wrapping. Items overflow if the main size is insufficient. | ![Items in a single line overflowing the container because wrapping is disabled.](https://developer.android.com/static/develop/ui/compose
  • Network accessline 82
    | `NoWrap` (default): Prevents items from wrapping. Items overflow if the main size is insufficient. | ![Items in a single line overflowing the container because wrapping is disabled.](https://developer.android.com/static/develop/ui/compose
  • Network accessline 83
    | `Wrap`: When there is insufficient space for an item (plus any [gap](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#add-gaps)), a new line is created in the direction of the cross axis. For ex
  • Network accessline 83
    | `Wrap`: When there is insufficient space for an item (plus any [gap](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#add-gaps)), a new line is created in the direction of the cross axis. For ex
  • Network accessline 84
    | `WrapReverse`: The same as `Wrap`, except the new line is added in the opposite direction to the cross axis. For example, if the direction is `Row`, a new line is added **above**. | ![Items wrapping onto a new line above because reverse w
  • Network accessline 84
    | `WrapReverse`: The same as `Wrap`, except the new line is added in the opposite direction to the cross axis. For example, if the direction is `Row`, a new line is added **above**. | ![Items wrapping onto a new line above because reverse w
  • Network accessline 91
    There is `100dp` available space in the line. Child 1 is `20dp`. There is space, so Child 1 is placed into the line. ![First item placed in the FlexBox container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adapt
  • Network accessline 91
    There is `100dp` available space in the line. Child 1 is `20dp`. There is space, so Child 1 is placed into the line. ![First item placed in the FlexBox container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adapt
  • Network accessline 93
    ![First item placed in the FlexBox container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/algorithm-1.png) **Figure 1.** First item placed in the `FlexBox` container.
  • Network accessline 93
    ![First item placed in the FlexBox container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/algorithm-1.png) **Figure 1.** First item placed in the `FlexBox` container.
  • Network accessline 96
    `40dp`. The required space is `48dp`. There is space, so the gap and Child 2 are placed into the line. ![Second item placed in the FlexBox container after the first item.](https://developer.android.com/static/develop/ui/compose/images/layou
  • Network accessline 96
    `40dp`. The required space is `48dp`. There is space, so the gap and Child 2 are placed into the line. ![Second item placed in the FlexBox container after the first item.](https://developer.android.com/static/develop/ui/compose/images/layou
  • Network accessline 98
    ![Second item placed in the FlexBox container after the first item.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/algorithm-2.png) **Figure 2.** Second item placed in the `FlexBox` container after 
  • Network accessline 98
    ![Second item placed in the FlexBox container after the first item.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/algorithm-2.png) **Figure 2.** Second item placed in the `FlexBox` container after 
  • Network accessline 101
    `50dp`. The required space is `58dp`. There is not enough space in the current line, so Child 3 is placed in a new line. ![Third item placed on a new line because it doesn't fit on the first line.](https://developer.android.com/static/devel
  • Network accessline 101
    `50dp`. The required space is `58dp`. There is not enough space in the current line, so Child 3 is placed in a new line. ![Third item placed on a new line because it doesn't fit on the first line.](https://developer.android.com/static/devel
  • Network accessline 103
    ![Third item placed on a new line because it doesn't fit on the first line.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/algorithm-3.png) **Figure 3.** Third item placed on a new line because it d
  • Network accessline 103
    ![Third item placed on a new line because it doesn't fit on the first line.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/algorithm-3.png) **Figure 3.** Third item placed on a new line because it d
  • Network accessline 110
    |---|---|---| | ![Row gap adds vertical space between items.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/gap-1.png) | ![Column gap adds horizontal space between items.](https://developer.android.
  • Network accessline 110
    |---|---|---| | ![Row gap adds vertical space between items.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/gap-1.png) | ![Column gap adds horizontal space between items.](https://developer.android.
  • Network accessline 111
    | ![Row gap adds vertical space between items.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/gap-1.png) | ![Column gap adds horizontal space between items.](https://developer.android.com/static/dev
  • Network accessline 111
    | ![Row gap adds vertical space between items.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/gap-1.png) | ![Column gap adds horizontal space between items.](https://developer.android.com/static/dev

jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md

  • Network accessline 5
    1. Add the [`androidx.compose.foundation.layout`](https://developer.android.com/jetpack/androidx/versions) library to your project's
  • Network accessline 5
    1. Add the [`androidx.compose.foundation.layout`](https://developer.android.com/jetpack/androidx/versions) library to your project's
  • Network accessline 40
    ![Hello World text composables stacked on top of each other in a basic FlexBox implementation.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/basic-flexbox.png)
  • Network accessline 40
    ![Hello World text composables stacked on top of each other in a basic FlexBox implementation.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/basic-flexbox.png)
  • Network accessline 66
    ![Two rows of colored items, with three unequally sized items distributed across the top row and two unequally sized items across the bottom row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/basic
  • Network accessline 66
    ![Two rows of colored items, with three unequally sized items distributed across the top row and two unequally sized items across the bottom row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/basic
  • Network accessline 68
    To learn more about `FlexBox` behavior, see [Set container behavior](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior) and [Set
  • Network accessline 68
    To learn more about `FlexBox` behavior, see [Set container behavior](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior) and [Set
  • Network accessline 69
    item behavior](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior).
  • Network accessline 69
    item behavior](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior).

jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md

  • Network accessline 1
    [`FlexBox`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/FlexBox.composable#FlexBox(androidx.compose.ui.Modifier,androidx.compose.foundation.layout.FlexBoxConfig,kotlin.Function1)) is a container that la
  • Network accessline 1
    [`FlexBox`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/FlexBox.composable#FlexBox(androidx.compose.ui.Modifier,androidx.compose.foundation.layout.FlexBoxConfig,kotlin.Function1)) is a container that la
  • Network accessline 15
    overall screen layout. For an overall screen layout, `Grid` is usually a better choice. `FlexBox` does not support lazy-loading of items. To display large numbers of items, use [lazy lists and grids](https://developer.android.com/develop/ui
  • Network accessline 15
    overall screen layout. For an overall screen layout, `Grid` is usually a better choice. `FlexBox` does not support lazy-loading of items. To display large numbers of items, use [lazy lists and grids](https://developer.android.com/develop/ui
  • Network accessline 16
    `Grid` is usually a better choice. `FlexBox` does not support lazy-loading of items. To display large numbers of items, use [lazy lists and grids](https://developer.android.com/develop/ui/compose/lists). If you need to wrap items, use `Flex
  • Network accessline 16
    `Grid` is usually a better choice. `FlexBox` does not support lazy-loading of items. To display large numbers of items, use [lazy lists and grids](https://developer.android.com/develop/ui/compose/lists). If you need to wrap items, use `Flex
  • Network accessline 17
    items. To display large numbers of items, use [lazy lists and grids](https://developer.android.com/develop/ui/compose/lists). If you
  • Network accessline 17
    items. To display large numbers of items, use [lazy lists and grids](https://developer.android.com/develop/ui/compose/lists). If you
  • Network accessline 22
    > [!IMPORTANT] > **Key Point:** `FlexBox` is heavily influenced by the [CSS Flexible Box Layout specification](https://www.w3.org/TR/css-flexbox-1/) and has almost identical concepts, terminology, and behavior. If you're familiar with `disp
  • Network accessline 22
    > [!IMPORTANT] > **Key Point:** `FlexBox` is heavily influenced by the [CSS Flexible Box Layout specification](https://www.w3.org/TR/css-flexbox-1/) and has almost identical concepts, terminology, and behavior. If you're familiar with `disp
  • Network accessline 23
    > **Key Point:** `FlexBox` is heavily influenced by the [CSS Flexible Box Layout specification](https://www.w3.org/TR/css-flexbox-1/) and has almost identical concepts, terminology, and behavior. If you're familiar with `display: flex`, you
  • Network accessline 23
    > **Key Point:** `FlexBox` is heavily influenced by the [CSS Flexible Box Layout specification](https://www.w3.org/TR/css-flexbox-1/) and has almost identical concepts, terminology, and behavior. If you're familiar with `display: flex`, you
  • Network accessline 32
    ![FlexBox with horizontal main axis and vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/intro-row-2.png) **Figure 1.** Axes and sizes when the `FlexBox` direction is `Row`. ![Fle
  • Network accessline 32
    ![FlexBox with horizontal main axis and vertical cross axis.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/intro-row-2.png) **Figure 1.** Axes and sizes when the `FlexBox` direction is `Row`. ![Fle
  • Network accessline 43
    | **Container properties (`config`**) | **Item properties (`Modifier.flex`**) | |---|---| | - `direction` - the item layout direction - `wrap` - whether to wrap items if the **main size** is insufficient - `justifyContent` - how to **distri
  • Network accessline 43
    | **Container properties (`config`**) | **Item properties (`Modifier.flex`**) | |---|---| | - `direction` - the item layout direction - `wrap` - whether to wrap items if the **main size** is insufficient - `justifyContent` - how to **distri
  • Network accessline 45
    | - `direction` - the item layout direction - `wrap` - whether to wrap items if the **main size** is insufficient - `justifyContent` - how to **distribute** items along the **main axis** - `alignItems` - how to **align** items along the **c
  • Network accessline 45
    | - `direction` - the item layout direction - `wrap` - whether to wrap items if the **main size** is insufficient - `justifyContent` - how to **distribute** items along the **main axis** - `alignItems` - how to **align** items along the **c
  • Network accessline 55
    1. **Calculate child base size** : Use the child's [`basis` value](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#set-initial-size)
  • Network accessline 55
    1. **Calculate child base size** : Use the child's [`basis` value](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#set-initial-size)
  • Network accessline 59
    2. **Sort the children** : Sort the children by their [`order`](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#item-order) values, if
  • Network accessline 59
    2. **Sort the children** : Sort the children by their [`order`](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#item-order) values, if
  • Network accessline 62
    3. **Build lines** : For each child, check if its initial size plus    [`gap`](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#add-gaps) will fit into the remaining space on the current line.
  • Network accessline 62
    3. **Build lines** : For each child, check if its initial size plus    [`gap`](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#add-gaps) will fit into the remaining space on the current line.
  • Network accessline 63
    [`gap`](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#add-gaps) will fit into the remaining space on the current line.
  • Network accessline 63
    [`gap`](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#add-gaps) will fit into the remaining space on the current line.
  • Network accessline 64
    If so, place this child into the line. If not, place it onto a new line if    [wrapping is enabled](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#wrap-items), or place the item into the current
  • Network accessline 64
    If so, place this child into the line. If not, place it onto a new line if    [wrapping is enabled](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#wrap-items), or place the item into the current
  • Network accessline 65
    [wrapping is enabled](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#wrap-items), or place the item into the current line
  • Network accessline 65
    [wrapping is enabled](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#wrap-items), or place the item into the current line
  • Network accessline 69
    4. **Align or resize items in the main axis** : For each line, distribute extra    space *to* or between items by [resizing](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#item-size) or
  • Network accessline 69
    4. **Align or resize items in the main axis** : For each line, distribute extra    space *to* or between items by [resizing](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#item-size) or
  • Network accessline 70
    space *to* or between items by [resizing](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#item-size) or
  • Network accessline 70
    space *to* or between items by [resizing](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/item-behavior#item-size) or
  • Network accessline 71
    [aligning](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#main-axis) them.
  • Network accessline 71
    [aligning](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#main-axis) them.
  • Network accessline 73
    5. **Align or resize items in the cross axis** : For each line, distribute extra    space to or between items and lines by [stretching or aligning    them](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-
  • Network accessline 73
    5. **Align or resize items in the cross axis** : For each line, distribute extra    space to or between items and lines by [stretching or aligning    them](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-
  • Network accessline 75
    them](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#cross-axis).
  • Network accessline 75
    them](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#cross-axis).
  • Network accessline 77
    Now that you're familiar with `FlexBox` concepts, see [Get started](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/get-started) to
  • Network accessline 77
    Now that you're familiar with `FlexBox` concepts, see [Get started](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/get-started) to

jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.md

  • Network accessline 28
    |---|---|---|---| | **Value type** | **Behavior** | **Code snippet** Note: The boxes have a maximum intrinsic size of `100dp` | **Example using container width `600dp`** | | `Auto` (default) | Use the item's maximum intrinsic size. For exam
  • Network accessline 28
    |---|---|---|---| | **Value type** | **Behavior** | **Code snippet** Note: The boxes have a maximum intrinsic size of `100dp` | **Example using container width `600dp`** | | `Auto` (default) | Use the item's maximum intrinsic size. For exam
  • Network accessline 29
    | **Value type** | **Behavior** | **Code snippet** Note: The boxes have a maximum intrinsic size of `100dp` | **Example using container width `600dp`** | | `Auto` (default) | Use the item's maximum intrinsic size. For example, a `Text` comp
  • Network accessline 29
    | **Value type** | **Behavior** | **Code snippet** Note: The boxes have a maximum intrinsic size of `100dp` | **Example using container width `600dp`** | | `Auto` (default) | Use the item's maximum intrinsic size. For example, a `Text` comp
  • Network accessline 30
    | `Auto` (default) | Use the item's maximum intrinsic size. For example, a `Text` composable's maximum intrinsic width is the width of all its text on a single line - no wrapping. | ```kotlin FlexBox { RedRoundedBox( Modifier.flex { basis(F
  • Network accessline 30
    | `Auto` (default) | Use the item's maximum intrinsic size. For example, a `Text` composable's maximum intrinsic width is the width of all its text on a single line - no wrapping. | ```kotlin FlexBox { RedRoundedBox( Modifier.flex { basis(F
  • Network accessline 31
    | Fixed `dp` | A fixed size in Dp. | ```kotlin FlexBox { RedRoundedBox( Modifier.flex { basis(200.dp) } ) BlueRoundedBox( Modifier.flex { basis(100.dp) } ) } ``` | ![Items sized to a fixed dp value using basis.](https://developer.android.co
  • Network accessline 31
    | Fixed `dp` | A fixed size in Dp. | ```kotlin FlexBox { RedRoundedBox( Modifier.flex { basis(200.dp) } ) BlueRoundedBox( Modifier.flex { basis(100.dp) } ) } ``` | ![Items sized to a fixed dp value using basis.](https://developer.android.co
  • Network accessline 32
    | Percentage | A percentage of the container size. | ```kotlin FlexBox { RedRoundedBox( Modifier.flex { basis(0.7f) } ) BlueRoundedBox( Modifier.flex { basis(0.3f) } ) } ``` | ![Items sized as a percentage of container size using basis.](ht
  • Network accessline 32
    | Percentage | A percentage of the container size. | ```kotlin FlexBox { RedRoundedBox( Modifier.flex { basis(0.7f) } ) BlueRoundedBox( Modifier.flex { basis(0.3f) } ) } ``` | ![Items sized as a percentage of container size using basis.](ht
  • Network accessline 54
    |---|---| | ```kotlin FlexBox { RedRoundedBox( title = "400dp", modifier = Modifier.flex { grow(1f) } ) BlueRoundedBox(title = "100dp") GreenRoundedBox(title = "100dp") } ``` | Each child has a basis value of `100dp`. There is `300dp` of ex
  • Network accessline 54
    |---|---| | ```kotlin FlexBox { RedRoundedBox( title = "400dp", modifier = Modifier.flex { grow(1f) } ) BlueRoundedBox(title = "100dp") GreenRoundedBox(title = "100dp") } ``` | Each child has a basis value of `100dp`. There is `300dp` of ex
  • Network accessline 55
    | ```kotlin FlexBox { RedRoundedBox( title = "400dp", modifier = Modifier.flex { grow(1f) } ) BlueRoundedBox(title = "100dp") GreenRoundedBox(title = "100dp") } ``` | Each child has a basis value of `100dp`. There is `300dp` of extra space.
  • Network accessline 55
    | ```kotlin FlexBox { RedRoundedBox( title = "400dp", modifier = Modifier.flex { grow(1f) } ) BlueRoundedBox(title = "100dp") GreenRoundedBox(title = "100dp") } ``` | Each child has a basis value of `100dp`. There is `300dp` of extra space.
  • Network accessline 60
    |---|---| | ```kotlin FlexBox { RedRoundedBox( title = "150dp", modifier = Modifier.flex { grow(1f) } ) BlueRoundedBox( title = "200dp", modifier = Modifier.flex { grow(2f) } ) GreenRoundedBox( title = "250dp", modifier = Modifier.flex { gr
  • Network accessline 60
    |---|---| | ```kotlin FlexBox { RedRoundedBox( title = "150dp", modifier = Modifier.flex { grow(1f) } ) BlueRoundedBox( title = "200dp", modifier = Modifier.flex { grow(2f) } ) GreenRoundedBox( title = "250dp", modifier = Modifier.flex { gr
  • Network accessline 61
    | ```kotlin FlexBox { RedRoundedBox( title = "150dp", modifier = Modifier.flex { grow(1f) } ) BlueRoundedBox( title = "200dp", modifier = Modifier.flex { grow(2f) } ) GreenRoundedBox( title = "250dp", modifier = Modifier.flex { grow(3f) } )
  • Network accessline 61
    | ```kotlin FlexBox { RedRoundedBox( title = "150dp", modifier = Modifier.flex { grow(1f) } ) BlueRoundedBox( title = "200dp", modifier = Modifier.flex { grow(2f) } ) GreenRoundedBox( title = "250dp", modifier = Modifier.flex { grow(3f) } )
  • Network accessline 100
    |---|---| | **Container size** | **FlexBox UI** | | `700dp` | ![Two items in a 700dp container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-1.png) |
  • Network accessline 100
    |---|---| | **Container size** | **FlexBox UI** | | `700dp` | ![Two items in a 700dp container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-1.png) |
  • Network accessline 101
    | **Container size** | **FlexBox UI** | | `700dp` | ![Two items in a 700dp container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-1.png) | | `500dp` | ![First item shrinks as contai
  • Network accessline 101
    | **Container size** | **FlexBox UI** | | `700dp` | ![Two items in a 700dp container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-1.png) | | `500dp` | ![First item shrinks as contai
  • Network accessline 102
    | `700dp` | ![Two items in a 700dp container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-1.png) |
  • Network accessline 102
    | `700dp` | ![Two items in a 700dp container.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-1.png) |
  • Network accessline 103
    | `500dp` | ![First item shrinks as container size reduces to 500dp.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-2.png) |
  • Network accessline 103
    | `500dp` | ![First item shrinks as container size reduces to 500dp.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-2.png) |
  • Network accessline 104
    | `450dp` | ![First item shrinks further as container size reduces to 450dp.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-3.png) |
  • Network accessline 104
    | `450dp` | ![First item shrinks further as container size reduces to 450dp.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/containersize-3.png) |
  • Network accessline 108
    Use `alignSelf` to control how an item is aligned to the cross axis. This overrides the [`alignItems` property](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#align-distribute) of the container 
  • Network accessline 108
    Use `alignSelf` to control how an item is aligned to the cross axis. This overrides the [`alignItems` property](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#align-distribute) of the container 
  • Network accessline 109
    overrides the [`alignItems` property](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#align-distribute) of the container for this item. It
  • Network accessline 109
    overrides the [`alignItems` property](https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox/container-behavior#align-distribute) of the container for this item. It
  • Network accessline 133
    ![Five children of varying sizes overriding the alignItems property.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/item-alignment.png)
  • Network accessline 133
    ![Five children of varying sizes overriding the alignItems property.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/item-alignment.png)
  • Network accessline 170
    ![Two rounded boxes, with the first containing the text Hello and the second containing the text World.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/itemorder.png)
  • Network accessline 170
    ![Two rounded boxes, with the first containing the text Hello and the second containing the text World.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/flexbox/itemorder.png)

jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.md

  • Network accessline 5
    - [Define a grid](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#grid-definition): Set up the basic structure of rows and columns.
  • Network accessline 5
    - [Define a grid](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#grid-definition): Set up the basic structure of rows and columns.
  • Network accessline 6
    - [Place items in a grid](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#item-placement): Understand how items are placed into grid cells and how to change flow direction.
  • Network accessline 6
    - [Place items in a grid](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#item-placement): Understand how items are placed into grid cells and how to change flow direction.
  • Network accessline 7
    - [Manage track sizing](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#grid-track-size): Use fixed, percentage, flexible, and intrinsic sizing to set track sizes.
  • Network accessline 7
    - [Manage track sizing](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#grid-track-size): Use fixed, percentage, flexible, and intrinsic sizing to set track sizes.
  • Network accessline 8
    - [Set gaps](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#grid-gap): Manage the "gutters" between rows and columns.
  • Network accessline 8
    - [Set gaps](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#grid-gap): Manage the "gutters" between rows and columns.
  • Network accessline 12
    A grid consists of columns and rows. The [`Grid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Grid.composable#Grid(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1)) composable has a `conf
  • Network accessline 12
    A grid consists of columns and rows. The [`Grid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Grid.composable#Grid(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1)) composable has a `conf
  • Network accessline 13
    The [`Grid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Grid.composable#Grid(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1)) composable has a `config` parameter
  • Network accessline 13
    The [`Grid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Grid.composable#Grid(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1)) composable has a `config` parameter
  • Network accessline 14
    that accepts a lambda to define the columns and rows within [`GridConfigurationScope`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope). The following example defines a grid that has 
  • Network accessline 14
    that accepts a lambda to define the columns and rows within [`GridConfigurationScope`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope). The following example defines a grid that has 
  • Network accessline 15
    within [`GridConfigurationScope`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope).
  • Network accessline 15
    within [`GridConfigurationScope`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope).
  • Network accessline 17
    each with a fixed size specified in [`Dp`](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp):
  • Network accessline 17
    each with a fixed size specified in [`Dp`](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp):
  • Network accessline 75
    ![Six cards are placed in a grid that has three rows and two columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/placement.png) **Figure 1**. Six cards are placed in a grid that has three rows and 
  • Network accessline 75
    ![Six cards are placed in a grid that has three rows and two columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/placement.png) **Figure 1**. Six cards are placed in a grid that has three rows and 
  • Network accessline 77
    To change this default behavior to filling by column, set the [`flow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#flow()) property to [`GridFlow.Column`](https://developer.androi
  • Network accessline 77
    To change this default behavior to filling by column, set the [`flow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#flow()) property to [`GridFlow.Column`](https://developer.androi
  • Network accessline 78
    set the [`flow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#flow()) property to [`GridFlow.Column`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lay
  • Network accessline 78
    set the [`flow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#flow()) property to [`GridFlow.Column`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lay
  • Network accessline 105
    ![The flow function changes the direction to place items.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-flow.png) **Figure 2** . `GridFlow.Row` (left) and `GridFlow.Column` (right).
  • Network accessline 105
    ![The flow function changes the direction to place items.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-flow.png) **Figure 2** . `GridFlow.Row` (left) and `GridFlow.Column` (right).
  • Network accessline 109
    Rows and columns are collectively referred to as a [grid track](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-track).
  • Network accessline 109
    Rows and columns are collectively referred to as a [grid track](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-track).
  • Network accessline 112
    - **Fixed** (`Dp`): Allocates a specific size (e.g., `column(180.dp)`). - **Percentage** (`Float`): Allocates a percentage of the total available space from `0.0f` to `1.0f` (e.g., `row(0.5f)` for 50%). - **Flexible** ([`Fr`](https://develo
  • Network accessline 112
    - **Fixed** (`Dp`): Allocates a specific size (e.g., `column(180.dp)`). - **Percentage** (`Float`): Allocates a percentage of the total available space from `0.0f` to `1.0f` (e.g., `row(0.5f)` for 50%). - **Flexible** ([`Fr`](https://develo
  • Network accessline 113
    - **Percentage** (`Float`): Allocates a percentage of the total available space from `0.0f` to `1.0f` (e.g., `row(0.5f)` for 50%). - **Flexible** ([`Fr`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Fr))
  • Network accessline 113
    - **Percentage** (`Float`): Allocates a percentage of the total available space from `0.0f` to `1.0f` (e.g., `row(0.5f)` for 50%). - **Flexible** ([`Fr`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Fr))
  • Network accessline 114
    - **Flexible** ([`Fr`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Fr)): Distributes remaining space proportionally after fixed and percentage tracks are calculated. For example, if two rows are set to 
  • Network accessline 114
    - **Flexible** ([`Fr`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Fr)): Distributes remaining space proportionally after fixed and percentage tracks are calculated. For example, if two rows are set to 
  • Network accessline 115
    - **Intrinsic** : Sizes the track based on the content inside it. For more information, see [Determine grid track size intrinsically](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#intrisic-grid-
  • Network accessline 115
    - **Intrinsic** : Sizes the track based on the content inside it. For more information, see [Determine grid track size intrinsically](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#intrisic-grid-
  • Network accessline 143
    ![Row heights defined using the four primary track sizing options.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/track-sizes.png) **Figure 3** . Row heights defined using the four primary track sizing
  • Network accessline 143
    ![Row heights defined using the four primary track sizing options.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/track-sizes.png) **Figure 3** . Row heights defined using the four primary track sizing
  • Network accessline 148
    a standard flexible track can shrink to `0.dp`. To prevent this and ensure content isn't crushed, use [`GridTrackSize.MinMax`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MinMax(androidx.c
  • Network accessline 148
    a standard flexible track can shrink to `0.dp`. To prevent this and ensure content isn't crushed, use [`GridTrackSize.MinMax`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MinMax(androidx.c
  • Network accessline 149
    To prevent this and ensure content isn't crushed, use [`GridTrackSize.MinMax`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MinMax(androidx.compose.ui.unit.Dp,androidx.compose.foundation.la
  • Network accessline 149
    To prevent this and ensure content isn't crushed, use [`GridTrackSize.MinMax`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MinMax(androidx.compose.ui.unit.Dp,androidx.compose.foundation.la
  • Network accessline 150
    use [`GridTrackSize.MinMax`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MinMax(androidx.compose.ui.unit.Dp,androidx.compose.foundation.layout.Fr))
  • Network accessline 150
    use [`GridTrackSize.MinMax`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MinMax(androidx.compose.ui.unit.Dp,androidx.compose.foundation.layout.Fr))
  • Network accessline 178
    ![Row heights defined using the four primary track sizing options.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/track-size-minmax.png) **Figure 4** . The first row has at least `100.dp` height.
  • Network accessline 178
    ![Row heights defined using the four primary track sizing options.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/track-size-minmax.png) **Figure 4** . The first row has at least `100.dp` height.
  • Network accessline 183
    their children to establish a base size. However, Jetpack Compose prohibits querying the intrinsic sizes of [`SubcomposeLayout`](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#Subcompos
  • Network accessline 183
    their children to establish a base size. However, Jetpack Compose prohibits querying the intrinsic sizes of [`SubcomposeLayout`](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#Subcompos
  • Network accessline 184
    However, Jetpack Compose prohibits querying the intrinsic sizes of [`SubcomposeLayout`](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#SubcomposeLayout(androidx.compose.ui.Modifier,kotl
  • Network accessline 184
    However, Jetpack Compose prohibits querying the intrinsic sizes of [`SubcomposeLayout`](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#SubcomposeLayout(androidx.compose.ui.Modifier,kotl
  • Network accessline 185
    [`SubcomposeLayout`](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#SubcomposeLayout(androidx.compose.ui.Modifier,kotlin.Function2)), which backs components,
  • Network accessline 185
    [`SubcomposeLayout`](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#SubcomposeLayout(androidx.compose.ui.Modifier,kotlin.Function2)), which backs components,
  • Network accessline 186
    such as [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyColumn.composable) and [`LazyRow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyRow.composable
  • Network accessline 186
    such as [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyColumn.composable) and [`LazyRow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyRow.composable
  • Network accessline 188
    Placing a lazy list inside a standard flexible track causes an [`IllegalStateException`](https://developer.android.com/reference/java/lang/IllegalStateException) crash.
  • Network accessline 188
    Placing a lazy list inside a standard flexible track causes an [`IllegalStateException`](https://developer.android.com/reference/java/lang/IllegalStateException) crash.
  • Network accessline 189
    an [`IllegalStateException`](https://developer.android.com/reference/java/lang/IllegalStateException) crash.
  • Network accessline 189
    an [`IllegalStateException`](https://developer.android.com/reference/java/lang/IllegalStateException) crash.
  • Network accessline 220
    ![Row heights defined using the four primary track sizing options.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/lazy-column-in-grid.png) **Figure 5** . `LazyColumn` in a grid cell.
  • Network accessline 220
    ![Row heights defined using the four primary track sizing options.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/lazy-column-in-grid.png) **Figure 5** . `LazyColumn` in a grid cell.
  • Network accessline 224
    You can use [intrinsic sizing](https://developer.android.com/develop/ui/compose/layouts/intrinsic-measurements) for a `Grid`
  • Network accessline 224
    You can use [intrinsic sizing](https://developer.android.com/develop/ui/compose/layouts/intrinsic-measurements) for a `Grid`
  • Network accessline 229
    - [`GridTrackSize.MaxContent`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MaxContent()): Use the content's maximum intrinsic size (e.g., the width is determined by the full length of the 
  • Network accessline 229
    - [`GridTrackSize.MaxContent`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MaxContent()): Use the content's maximum intrinsic size (e.g., the width is determined by the full length of the 
  • Network accessline 230
    - [`GridTrackSize.MinContent`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MinContent()): Use the content's minimum intrinsic size (e.g., the width is determined by the longest single word
  • Network accessline 230
    - [`GridTrackSize.MinContent`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#MinContent()): Use the content's minimum intrinsic size (e.g., the width is determined by the longest single word
  • Network accessline 231
    - [`GridTrackSize.Auto`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#Auto()): Use a flexible size for a track that adapts based on available space. It behaves like `MaxContent` by default,
  • Network accessline 231
    - [`GridTrackSize.Auto`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridTrackSize#Auto()): Use a flexible size for a track that adapts based on available space. It behaves like `MaxContent` by default,
  • Network accessline 255
    ![Intrinsic sizes specified in the columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/intrinsic-size.png) **Figure 5**. Intrinsic sizes specified in the columns.
  • Network accessline 255
    ![Intrinsic sizes specified in the columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/intrinsic-size.png) **Figure 5**. Intrinsic sizes specified in the columns.
  • Network accessline 259
    Once your grid tracks are sized, you can modify the [grid gap](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-gap) to refine the spacing between the tracks.
  • Network accessline 259
    Once your grid tracks are sized, you can modify the [grid gap](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-gap) to refine the spacing between the tracks.
  • Network accessline 260
    you can modify the [grid gap](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-gap) to refine the spacing between the tracks.
  • Network accessline 260
    you can modify the [grid gap](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-gap) to refine the spacing between the tracks.
  • Network accessline 261
    You can specify the column gap with the [`columnGap`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#columnGap(androidx.compose.ui.unit.Dp)) function,
  • Network accessline 261
    You can specify the column gap with the [`columnGap`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#columnGap(androidx.compose.ui.unit.Dp)) function,
  • Network accessline 262
    and the row gap with [`rowGap`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#rowGap(androidx.compose.ui.unit.Dp)). In the following example,
  • Network accessline 262
    and the row gap with [`rowGap`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#rowGap(androidx.compose.ui.unit.Dp)). In the following example,
  • Network accessline 291
    ![Gaps between rows and columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/gaps.png) **Figure 6**. Gaps between rows and columns.
  • Network accessline 291
    ![Gaps between rows and columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/gaps.png) **Figure 6**. Gaps between rows and columns.
  • Network accessline 293
    You can also use the convenience function [`gap`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#gap(androidx.compose.ui.unit.Dp))
  • Network accessline 293
    You can also use the convenience function [`gap`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#gap(androidx.compose.ui.unit.Dp))
  • Network accessline 324
    Named areas allow you to attach names to groups of grid cells, which are called [grid areas](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area).
  • Network accessline 324
    Named areas allow you to attach names to groups of grid cells, which are called [grid areas](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area).
  • Network accessline 325
    which are called [grid areas](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area).
  • Network accessline 325
    which are called [grid areas](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area).
  • Network accessline 326
    You can use these names instead of [coordinate indexes](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/item-properties#position)
  • Network accessline 326
    You can use these names instead of [coordinate indexes](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/item-properties#position)
  • Network accessline 337
    Inside the `config` lambda, use the [`area`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#area(kotlin.Any,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)) function in
  • Network accessline 337
    Inside the `config` lambda, use the [`area`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridConfigurationScope#area(kotlin.Any,kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)) function in
  • Network accessline 338
    `GridConfigurationScope` to register named areas in the grid. You can then assign child composables to these areas using the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.
  • Network accessline 338
    `GridConfigurationScope` to register named areas in the grid. You can then assign child composables to these areas using the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.
  • Network accessline 339
    You can then assign child composables to these areas using the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Any,androidx.compose.ui.A
  • Network accessline 339
    You can then assign child composables to these areas using the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Any,androidx.compose.ui.A
  • Network accessline 340
    using the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Any,androidx.compose.ui.Alignment)) modifier
  • Network accessline 340
    using the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Any,androidx.compose.ui.Alignment)) modifier

jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.md

  • Network accessline 1
    This page describes how to implement basic [`Grid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Grid.composable#Grid(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1)) layouts.
  • Network accessline 1
    This page describes how to implement basic [`Grid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Grid.composable#Grid(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1)) layouts.
  • Network accessline 5
    1. Add the [`androidx.compose.foundation.layout`](https://developer.android.com/jetpack/androidx/versions) library to your project's
  • Network accessline 5
    1. Add the [`androidx.compose.foundation.layout`](https://developer.android.com/jetpack/androidx/versions) library to your project's
  • Network accessline 48
    ![A basic grid consists of rows and columns with fixed size.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/six-cards-in-grid.png) **Figure 1**. A basic grid consists of rows and columns with fixed siz
  • Network accessline 48
    ![A basic grid consists of rows and columns with fixed size.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/six-cards-in-grid.png) **Figure 1**. A basic grid consists of rows and columns with fixed siz
  • Network accessline 50
    To learn how to implement more advanced grids, see [Set container properties](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties) and [Set item properties](https://developer.android.com/develop/ui/co
  • Network accessline 50
    To learn how to implement more advanced grids, see [Set container properties](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties) and [Set item properties](https://developer.android.com/develop/ui/co
  • Network accessline 51
    see [Set container properties](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties) and [Set item properties](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/item-properties).
  • Network accessline 51
    see [Set container properties](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties) and [Set item properties](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/item-properties).

jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/index.md

  • Network accessline 1
    [`Grid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Grid.composable#Grid(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1)) is a Jetpack Compose API
  • Network accessline 1
    [`Grid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Grid.composable#Grid(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1)) is a Jetpack Compose API
  • Network accessline 3
    With this API, you can display items in multi-column or multi-row layouts that adapt to the available container size. ![A flexible and adaptive two-dimensional layout with Grid](https://developer.android.com/static/develop/ui/compose/images
  • Network accessline 3
    With this API, you can display items in multi-column or multi-row layouts that adapt to the available container size. ![A flexible and adaptive two-dimensional layout with Grid](https://developer.android.com/static/develop/ui/compose/images
  • Network accessline 5
    ![A flexible and adaptive two-dimensional layout with Grid](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/example.png) **Figure 1.** A flexible and adaptive two-dimensional layout with `Grid`.
  • Network accessline 5
    ![A flexible and adaptive two-dimensional layout with Grid](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/example.png) **Figure 1.** A flexible and adaptive two-dimensional layout with `Grid`.
  • Network accessline 9
    Compose already offers similar components, such as [`LazyVerticalGrid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/grid/LazyVerticalGrid.composable#LazyVerticalGrid(androidx.compose.foundation.lazy.grid.
  • Network accessline 9
    Compose already offers similar components, such as [`LazyVerticalGrid`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/grid/LazyVerticalGrid.composable#LazyVerticalGrid(androidx.compose.foundation.lazy.grid.
  • Network accessline 41
    including the one after the last row. In the following image, each dotted line represents a grid line: ![The grid consists of four horizontal lines and three vertical lines.](https://developer.android.com/static/develop/ui/compose/images/la
  • Network accessline 41
    including the one after the last row. In the following image, each dotted line represents a grid line: ![The grid consists of four horizontal lines and three vertical lines.](https://developer.android.com/static/develop/ui/compose/images/la
  • Network accessline 43
    ![The grid consists of four horizontal lines and three vertical lines.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-line.png) **Figure 2**. The grid consists of four horizontal lines and three v
  • Network accessline 43
    ![The grid consists of four horizontal lines and three vertical lines.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-line.png) **Figure 2**. The grid consists of four horizontal lines and three v
  • Network accessline 50
    To define the size of these tracks, assign a size to them when you create the grid. ![A grid track for the first row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-track.png) **Figure 3**. A grid
  • Network accessline 50
    To define the size of these tracks, assign a size to them when you create the grid. ![A grid track for the first row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-track.png) **Figure 3**. A grid
  • Network accessline 52
    ![A grid track for the first row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-track.png) **Figure 3**. A grid track for the first row.
  • Network accessline 52
    ![A grid track for the first row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-track.png) **Figure 3**. A grid track for the first row.
  • Network accessline 56
    A grid cell is the intersection of a row and column track. ![A grid cell that is an intersection of the second row and the second column.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-cell.png) *
  • Network accessline 56
    A grid cell is the intersection of a row and column track. ![A grid cell that is an intersection of the second row and the second column.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-cell.png) *
  • Network accessline 57
    ![A grid cell that is an intersection of the second row and the second column.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-cell.png) **Figure 4**. A grid cell that is an intersection of the sec
  • Network accessline 57
    ![A grid cell that is an intersection of the second row and the second column.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-cell.png) **Figure 4**. A grid cell that is an intersection of the sec
  • Network accessline 61
    A grid area consists of several grid cells. You can define a grid area by making an item span multiple tracks. ![A grid area that consists of four grid cells.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/
  • Network accessline 61
    A grid area consists of several grid cells. You can define a grid area by making an item span multiple tracks. ![A grid area that consists of four grid cells.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/
  • Network accessline 63
    ![A grid area that consists of four grid cells.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-area.png) **Figure 5**. A grid area that consists of four grid cells.
  • Network accessline 63
    ![A grid area that consists of four grid cells.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-area.png) **Figure 5**. A grid area that consists of four grid cells.
  • Network accessline 68
    You can't place a UI element into a gap, but you can span a UI element across it. ![A grid gap between the first column and the second column.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-gap.pn
  • Network accessline 68
    You can't place a UI element into a gap, but you can span a UI element across it. ![A grid gap between the first column and the second column.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-gap.pn
  • Network accessline 70
    ![A grid gap between the first column and the second column.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-gap.png) **Figure 6**. A grid gap between the first column and the second column.
  • Network accessline 70
    ![A grid gap between the first column and the second column.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/grid-gap.png) **Figure 6**. A grid gap between the first column and the second column.

jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.md

  • Network accessline 1
    While the `Grid` config defines the overall structure, you use the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Int,kotlin.Int,kotlin
  • Network accessline 1
    While the `Grid` config defines the overall structure, you use the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Int,kotlin.Int,kotlin
  • Network accessline 2
    you use the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,androidx.compose.ui.Alignment)) modifie
  • Network accessline 2
    you use the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int,androidx.compose.ui.Alignment)) modifie
  • Network accessline 8
    with the `row` and `column` parameters. Coordinate indexes work best for straightforward grid layouts. For larger or more complex layouts, define [named areas](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container
  • Network accessline 8
    with the `row` and `column` parameters. Coordinate indexes work best for straightforward grid layouts. For larger or more complex layouts, define [named areas](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container
  • Network accessline 10
    For larger or more complex layouts, define [named areas](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#named-area) instead.
  • Network accessline 10
    For larger or more complex layouts, define [named areas](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid/container-properties#named-area) instead.
  • Network accessline 54
    ![Card #2 is placed in the grid cell in the second row and the second column, and Card #3 is placed in the first column in the third row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/position.png) **
  • Network accessline 54
    ![Card #2 is placed in the grid cell in the second row and the second column, and Card #3 is placed in the first column in the third row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/position.png) **
  • Network accessline 56
    and Card #3 is placed in the first column in the third row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/position.png) **Figure 1** . Card **#2** is placed in the grid cell in the second row and the 
  • Network accessline 56
    and Card #3 is placed in the first column in the third row.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/position.png) **Figure 1** . Card **#2** is placed in the grid cell in the second row and the 
  • Network accessline 60
    Use the `rowSpan` and `columnSpan` parameters to span an item over multiple cells. You can place a UI element into a [grid area](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area),
  • Network accessline 60
    Use the `rowSpan` and `columnSpan` parameters to span an item over multiple cells. You can place a UI element into a [grid area](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area),
  • Network accessline 61
    to span an item over multiple cells. You can place a UI element into a [grid area](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area), which is the area consisting of several [grid cells](https://developer.and
  • Network accessline 61
    to span an item over multiple cells. You can place a UI element into a [grid area](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area), which is the area consisting of several [grid cells](https://developer.and
  • Network accessline 62
    You can place a UI element into a [grid area](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area),
  • Network accessline 62
    You can place a UI element into a [grid area](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-area),
  • Network accessline 63
    which is the area consisting of several [grid cells](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-cell).
  • Network accessline 63
    which is the area consisting of several [grid cells](https://developer.android.com/develop/ui/compose/layouts/adaptive/grid#grid-cell).
  • Network accessline 93
    ![Card #4 spans three columns](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/spanning.png) **Figure 2** . Card **#4** spans three columns.
  • Network accessline 93
    ![Card #4 spans three columns](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/spanning.png) **Figure 2** . Card **#4** spans three columns.
  • Network accessline 97
    You can set the alignment of the UI element in a grid area by specifying it in the `alignment` parameter of the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Mo
  • Network accessline 97
    You can set the alignment of the UI element in a grid area by specifying it in the `alignment` parameter of the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Mo
  • Network accessline 98
    by specifying it in the `alignment` parameter of the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.In
  • Network accessline 98
    by specifying it in the `alignment` parameter of the [`gridItem`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/GridScope#(androidx.compose.ui.Modifier).gridItem(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.In
  • Network accessline 133
    ![The Text with #1 is placed in the center of the grid area consisting of two rows and two columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/alignment.png) **Figure 3** . The Text with **#1** is 
  • Network accessline 133
    ![The Text with #1 is placed in the center of the grid area consisting of two rows and two columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/alignment.png) **Figure 3** . The Text with **#1** is 
  • Network accessline 134
    consisting of two rows and two columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/alignment.png) **Figure 3** . The Text with **#1** is placed in the center of the grid area consisting of two rows
  • Network accessline 134
    consisting of two rows and two columns.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/alignment.png) **Figure 3** . The Text with **#1** is placed in the center of the grid area consisting of two rows
  • Network accessline 170
    ![Card #3 is placed next to Card <b>#1</b>, as it is an auto-placement.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/autoplacement-mixed-with-placement.png) **Figure 4** . Card **#3** is placed next 
  • Network accessline 170
    ![Card #3 is placed next to Card <b>#1</b>, as it is an auto-placement.](https://developer.android.com/static/develop/ui/compose/images/layouts/adaptive/grid/autoplacement-mixed-with-placement.png) **Figure 4** . Card **#3** is placed next 

jetpack-compose/adaptive/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.md

  • Network accessline 1
    > [!NOTE] > **Note:** The `mediaQuery` function and the related data types are experimental and subject to change. File any issues on the [issue tracker](https://issuetracker.google.com/issues?q=componentid:1876021).
  • Network accessline 1
    > [!NOTE] > **Note:** The `mediaQuery` function and the related data types are experimental and subject to change. File any issues on the [issue tracker](https://issuetracker.google.com/issues?q=componentid:1876021).
  • Network accessline 2
    > **Note:** The `mediaQuery` function and the related data types are experimental and subject to change. File any issues on the [issue tracker](https://issuetracker.google.com/issues?q=componentid:1876021).
  • Network accessline 2
    > **Note:** The `mediaQuery` function and the related data types are experimental and subject to change. File any issues on the [issue tracker](https://issuetracker.google.com/issues?q=componentid:1876021).
  • Network accessline 15
    Because the information is updated dynamically, you need to monitor it and trigger recomposition when any update happens. The [`mediaQuery`](https://developer.android.com/reference/kotlin/androidx/compose/ui/mediaQuery.composable#mediaQuery
  • Network accessline 15
    Because the information is updated dynamically, you need to monitor it and trigger recomposition when any update happens. The [`mediaQuery`](https://developer.android.com/reference/kotlin/androidx/compose/ui/mediaQuery.composable#mediaQuery
  • Network accessline 16
    you need to monitor it and trigger recomposition when any update happens. The [`mediaQuery`](https://developer.android.com/reference/kotlin/androidx/compose/ui/mediaQuery.composable#mediaQuery(kotlin.Function1)) function abstracts the detai
  • Network accessline 16
    you need to monitor it and trigger recomposition when any update happens. The [`mediaQuery`](https://developer.android.com/reference/kotlin/androidx/compose/ui/mediaQuery.composable#mediaQuery(kotlin.Function1)) function abstracts the detai
  • Network accessline 17
    The [`mediaQuery`](https://developer.android.com/reference/kotlin/androidx/compose/ui/mediaQuery.composable#mediaQuery(kotlin.Function1)) function abstracts the details of the information retrieval
  • Network accessline 17
    The [`mediaQuery`](https://developer.android.com/reference/kotlin/androidx/compose/ui/mediaQuery.composable#mediaQuery(kotlin.Function1)) function abstracts the details of the information retrieval
  • Network accessline 20
    > [!NOTE] > **Note:** "media" refers to the presentation medium that the UI is rendered on. The term "media" originates from [CSS media queries](https://www.w3.org/TR/mediaqueries-3/) which inspired the `mediaQuery` API.
  • Network accessline 20
    > [!NOTE] > **Note:** "media" refers to the presentation medium that the UI is rendered on. The term "media" originates from [CSS media queries](https://www.w3.org/TR/mediaqueries-3/) which inspired the `mediaQuery` API.
  • Network accessline 21
    > **Note:** "media" refers to the presentation medium that the UI is rendered on. The term "media" originates from [CSS media queries](https://www.w3.org/TR/mediaqueries-3/) which inspired the `mediaQuery` API.
  • Network accessline 21
    > **Note:** "media" refers to the presentation medium that the UI is rendered on. The term "media" originates from [CSS media queries](https://www.w3.org/TR/mediaqueries-3/) which inspired the `mediaQuery` API.
  • Network accessline 46
    To enable the `mediaQuery` function, set the `isMediaQueryIntegrationEnabled` attribute of the [`ComposeUiFlags`](https://developer.android.com/reference/kotlin/androidx/compose/ui/ComposeUiFlags) object to `true`:
  • Network accessline 46
    To enable the `mediaQuery` function, set the `isMediaQueryIntegrationEnabled` attribute of the [`ComposeUiFlags`](https://developer.android.com/reference/kotlin/androidx/compose/ui/ComposeUiFlags) object to `true`:
  • Network accessline 48
    the [`ComposeUiFlags`](https://developer.android.com/reference/kotlin/androidx/compose/ui/ComposeUiFlags) object to `true`:
  • Network accessline 48
    the [`ComposeUiFlags`](https://developer.android.com/reference/kotlin/androidx/compose/ui/ComposeUiFlags) object to `true`:
  • Network accessline 64
    You can define a condition as a lambda that is evaluated within [`UiMediaScope`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope).
  • Network accessline 64
    You can define a condition as a lambda that is evaluated within [`UiMediaScope`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope).
  • Network accessline 65
    that is evaluated within [`UiMediaScope`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope).
  • Network accessline 65
    that is evaluated within [`UiMediaScope`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope).
  • Network accessline 73
    | Parameter | Value type | Description | |---|---|---| | `windowWidth` | [`Dp`](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp) | The current window width in dp. |
  • Network accessline 73
    | Parameter | Value type | Description | |---|---|---| | `windowWidth` | [`Dp`](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp) | The current window width in dp. |
  • Network accessline 74
    |---|---|---| | `windowWidth` | [`Dp`](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp) | The current window width in dp. | | `windowHeight` | `Dp` | The current window height in dp. |
  • Network accessline 74
    |---|---|---| | `windowWidth` | [`Dp`](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp) | The current window width in dp. | | `windowHeight` | `Dp` | The current window height in dp. |
  • Network accessline 75
    | `windowWidth` | [`Dp`](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp) | The current window width in dp. |
  • Network accessline 75
    | `windowWidth` | [`Dp`](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/Dp) | The current window width in dp. |
  • Network accessline 76
    | `windowHeight` | `Dp` | The current window height in dp. | | `windowPosture` | [`UiMediaScope.Posture`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.Posture) | The current posture of the application wind
  • Network accessline 76
    | `windowHeight` | `Dp` | The current window height in dp. | | `windowPosture` | [`UiMediaScope.Posture`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.Posture) | The current posture of the application wind
  • Network accessline 77
    | `windowPosture` | [`UiMediaScope.Posture`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.Posture) | The current posture of the application window. |
  • Network accessline 77
    | `windowPosture` | [`UiMediaScope.Posture`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.Posture) | The current posture of the application window. |
  • Network accessline 78
    | `pointerPrecision` | [`UiMediaScope.PointerPrecision`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.PointerPrecision) | The highest precision of the available pointing devices. |
  • Network accessline 78
    | `pointerPrecision` | [`UiMediaScope.PointerPrecision`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.PointerPrecision) | The highest precision of the available pointing devices. |
  • Network accessline 79
    | `keyboardKind` | [`UiMediaScope.KeyboardKind`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.KeyboardKind) | The type of keyboard available or connected. |
  • Network accessline 79
    | `keyboardKind` | [`UiMediaScope.KeyboardKind`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.KeyboardKind) | The type of keyboard available or connected. |
  • Network accessline 80
    | `hasCamera` | `Boolean` | Whether the camera is supported on the device. | | `hasMicrophone` | `Boolean` | Whether the microphone is supported on the device. | | `viewingDistance` | [`UiMediaScope.ViewingDistance`](https://developer.andro
  • Network accessline 80
    | `hasCamera` | `Boolean` | Whether the camera is supported on the device. | | `hasMicrophone` | `Boolean` | Whether the microphone is supported on the device. | | `viewingDistance` | [`UiMediaScope.ViewingDistance`](https://developer.andro
  • Network accessline 82
    | `viewingDistance` | [`UiMediaScope.ViewingDistance`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.ViewingDistance) | The typical distance between the user and the device screen. |
  • Network accessline 82
    | `viewingDistance` | [`UiMediaScope.ViewingDistance`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.ViewingDistance) | The typical distance between the user and the device screen. |
  • Network accessline 84
    A `UiMediaScope` object resolves the values of the parameters. The `mediaQuery` function uses [`LocalUiMediaScope.current`](https://developer.android.com/reference/kotlin/androidx/compose/ui/package-summary#LocalUiMediaScope())
  • Network accessline 84
    A `UiMediaScope` object resolves the values of the parameters. The `mediaQuery` function uses [`LocalUiMediaScope.current`](https://developer.android.com/reference/kotlin/androidx/compose/ui/package-summary#LocalUiMediaScope())
  • Network accessline 85
    The `mediaQuery` function uses [`LocalUiMediaScope.current`](https://developer.android.com/reference/kotlin/androidx/compose/ui/package-summary#LocalUiMediaScope())
  • Network accessline 85
    The `mediaQuery` function uses [`LocalUiMediaScope.current`](https://developer.android.com/reference/kotlin/androidx/compose/ui/package-summary#LocalUiMediaScope())
  • Network accessline 115
    [Window size classes](https://developer.android.com/develop/ui/compose/layouts/adaptive/use-window-size-classes) are a set of opinionated viewport breakpoints
  • Network accessline 115
    [Window size classes](https://developer.android.com/develop/ui/compose/layouts/adaptive/use-window-size-classes) are a set of opinionated viewport breakpoints
  • Network accessline 118
    with the threshold defined in the window size classes. The following example changes the number of panes according to the window width. [`WindowSizeClass`](https://developer.android.com/reference/androidx/window/core/layout/WindowSizeClass)
  • Network accessline 118
    with the threshold defined in the window size classes. The following example changes the number of panes according to the window width. [`WindowSizeClass`](https://developer.android.com/reference/androidx/window/core/layout/WindowSizeClass)
  • Network accessline 119
    The following example changes the number of panes according to the window width. [`WindowSizeClass`](https://developer.android.com/reference/androidx/window/core/layout/WindowSizeClass) class has constants for the thresholds of window size 
  • Network accessline 119
    The following example changes the number of panes according to the window width. [`WindowSizeClass`](https://developer.android.com/reference/androidx/window/core/layout/WindowSizeClass) class has constants for the thresholds of window size 
  • Network accessline 120
    [`WindowSizeClass`](https://developer.android.com/reference/androidx/window/core/layout/WindowSizeClass) class has constants for the thresholds
  • Network accessline 120
    [`WindowSizeClass`](https://developer.android.com/reference/androidx/window/core/layout/WindowSizeClass) class has constants for the thresholds
  • Network accessline 123
    The [`derivedMediaQuery`](https://developer.android.com/reference/kotlin/androidx/compose/ui/derivedMediaQuery.composable#derivedMediaQuery(kotlin.Function1)) function evaluates the `query` lambda
  • Network accessline 123
    The [`derivedMediaQuery`](https://developer.android.com/reference/kotlin/androidx/compose/ui/derivedMediaQuery.composable#derivedMediaQuery(kotlin.Function1)) function evaluates the `query` lambda
  • Network accessline 124
    and wraps the result in a [`derivedStateOf`](https://developer.android.com/develop/ui/compose/side-effects#derivedstateof).
  • Network accessline 124
    and wraps the result in a [`derivedStateOf`](https://developer.android.com/develop/ui/compose/side-effects#derivedstateof).
  • Network accessline 150
    The `windowPosture` parameter describes the current window posture as a `UiMediaScope.Posture` object. You can check the current [posture](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables) by
  • Network accessline 150
    The `windowPosture` parameter describes the current window posture as a `UiMediaScope.Posture` object. You can check the current [posture](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables) by
  • Network accessline 151
    as a `UiMediaScope.Posture` object. You can check the current [posture](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables) by comparing the parameter with the values defined in the `UiMediaSco
  • Network accessline 151
    as a `UiMediaScope.Posture` object. You can check the current [posture](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables) by comparing the parameter with the values defined in the `UiMediaSco
  • Network accessline 152
    You can check the current [posture](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables) by comparing the parameter
  • Network accessline 152
    You can check the current [posture](https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables) by comparing the parameter
  • Network accessline 173
    of the available pointing devices, such as a mouse and touchscreen. There are four values defined in the `UiMediaScope.PointerPrecision` class: [`Fine`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.Pointer
  • Network accessline 173
    of the available pointing devices, such as a mouse and touchscreen. There are four values defined in the `UiMediaScope.PointerPrecision` class: [`Fine`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.Pointer
  • Network accessline 174
    There are four values defined in the `UiMediaScope.PointerPrecision` class: [`Fine`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.PointerPrecision#Fine()), [`Coarse`](https://developer.android.com/referenc
  • Network accessline 174
    There are four values defined in the `UiMediaScope.PointerPrecision` class: [`Fine`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.PointerPrecision#Fine()), [`Coarse`](https://developer.android.com/referenc
  • Network accessline 175
    [`Fine`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.PointerPrecision#Fine()), [`Coarse`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.PointerPrecision#Coarse()), [`Blun
  • Network accessline 175
    [`Fine`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.PointerPrecision#Fine()), [`Coarse`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.PointerPrecision#Coarse()), [`Blun
  • Network accessline 202
    The `keyboardKind` parameter represents the type of the available keyboards: [`Physical`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.KeyboardKind#Physical()), [`Virtual`](https://developer.android.com/re
  • Network accessline 202
    The `keyboardKind` parameter represents the type of the available keyboards: [`Physical`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.KeyboardKind#Physical()), [`Virtual`](https://developer.android.com/re
  • Network accessline 203
    [`Physical`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.KeyboardKind#Physical()), [`Virtual`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.KeyboardKind#Virtual()), and 
  • Network accessline 203
    [`Physical`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.KeyboardKind#Physical()), [`Virtual`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.KeyboardKind#Virtual()), and 
  • Network accessline 253
    There are three values defined in the `UiMediaScope.ViewingDistance` class: [`Near`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.ViewingDistance#Near()), [`Medium`](https://developer.android.com/reference
  • Network accessline 253
    There are three values defined in the `UiMediaScope.ViewingDistance` class: [`Near`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.ViewingDistance#Near()), [`Medium`](https://developer.android.com/reference
  • Network accessline 254
    [`Near`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.ViewingDistance#Near()), [`Medium`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.ViewingDistance#Medium()), and [`Fa
  • Network accessline 254
    [`Near`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.ViewingDistance#Near()), [`Medium`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.ViewingDistance#Medium()), and [`Fa
  • Network accessline 276
    and `FlatLayout` based on the `windowPosture` parameter value. To preview the `TabletopLayout`, the `windowPosture` parameter should be [`UiMediaScope.Posture.Tabletop`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiM
  • Network accessline 276
    and `FlatLayout` based on the `windowPosture` parameter value. To preview the `TabletopLayout`, the `windowPosture` parameter should be [`UiMediaScope.Posture.Tabletop`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiM
  • Network accessline 278
    [`UiMediaScope.Posture.Tabletop`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.Posture#Tabletop()).
  • Network accessline 278
    [`UiMediaScope.Posture.Tabletop`](https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope.Posture#Tabletop()).
  • Network accessline 296
    1. Enable the `mediaQuery` function. 2. Define a custom object that implements the `UiMediaScope` interface. 3. Set the custom object to the `LocalUiMediaScope` with the [`CompositionLocalProvider`](https://developer.android.com/reference/k
  • Network accessline 296
    1. Enable the `mediaQuery` function. 2. Define a custom object that implements the `UiMediaScope` interface. 3. Set the custom object to the `LocalUiMediaScope` with the [`CompositionLocalProvider`](https://developer.android.com/reference/k
  • Network accessline 297
    2. Define a custom object that implements the `UiMediaScope` interface. 3. Set the custom object to the `LocalUiMediaScope` with the [`CompositionLocalProvider`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Compos
  • Network accessline 297
    2. Define a custom object that implements the `UiMediaScope` interface. 3. Set the custom object to the `LocalUiMediaScope` with the [`CompositionLocalProvider`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Compos
  • Network accessline 298
    3. Set the custom object to the `LocalUiMediaScope` with the [`CompositionLocalProvider`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/CompositionLocalProvider.composable#CompositionLocalProvider(androidx.compose.
  • Network accessline 298
    3. Set the custom object to the `LocalUiMediaScope` with the [`CompositionLocalProvider`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/CompositionLocalProvider.composable#CompositionLocalProvider(androidx.compose.

jetpack-compose/adaptive/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md

  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/material/listdetail)
  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/material/listdetail)
  • Network accessline 32
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 32
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 33
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 33
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 34
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 34
    *     http://www.apache.org/licenses/LICENSE-2.0

jetpack-compose/adaptive/references/android/guide/navigation/navigation-3/save-state.md

  • Network accessline 9
    guidelines on how you should create or save it. However, Navigation 3 does offer a convenience method that provides you with a saveable back stack: [`rememberNavBackStack`](https://developer.android.com/reference/kotlin/androidx/navigation3
  • Network accessline 9
    guidelines on how you should create or save it. However, Navigation 3 does offer a convenience method that provides you with a saveable back stack: [`rememberNavBackStack`](https://developer.android.com/reference/kotlin/androidx/navigation3
  • Network accessline 11
    [`rememberNavBackStack`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/rememberNavBackStack.composable).
  • Network accessline 11
    [`rememberNavBackStack`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/rememberNavBackStack.composable).
  • Network accessline 21
    - **Implement `NavKey` interface** : Every key in the back stack must implement the [`NavKey`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/NavKey) interface. This acts as a marker interface that signals to th
  • Network accessline 21
    - **Implement `NavKey` interface** : Every key in the back stack must implement the [`NavKey`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/NavKey) interface. This acts as a marker interface that signals to th
  • Network accessline 22
    - **Have the `@Serializable` annotation** : In addition to implementing `NavKey`, your key classes and objects must be marked with the [`@Serializable`](https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.ser
  • Network accessline 22
    - **Have the `@Serializable` annotation** : In addition to implementing `NavKey`, your key classes and objects must be marked with the [`@Serializable`](https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.ser
  • Network accessline 75
    For more examples---including how to handle open polymorphism---see [`NavBackStackSamples`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:navigation3/navigation3-runtime/samples/src/main/kotlin/androidx/navigat
  • Network accessline 75
    For more examples---including how to handle open polymorphism---see [`NavBackStackSamples`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:navigation3/navigation3-runtime/samples/src/main/kotlin/androidx/navigat
  • Network accessline 76
    [`NavBackStackSamples`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:navigation3/navigation3-runtime/samples/src/main/kotlin/androidx/navigation3/runtime/samples/NavBackStackSamples.kt).
  • Network accessline 76
    [`NavBackStackSamples`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:navigation3/navigation3-runtime/samples/src/main/kotlin/androidx/navigation3/runtime/samples/NavBackStackSamples.kt).
  • Network accessline 99
    The `androidx.lifecycle:lifecycle-viewmodel-navigation3` add-on library provides a [`NavEntryDecorator`](https://developer.android.com/guide/navigation/navigation-3/naventrydecorators) that facilitates this. This decorator provides a
  • Network accessline 99
    The `androidx.lifecycle:lifecycle-viewmodel-navigation3` add-on library provides a [`NavEntryDecorator`](https://developer.android.com/guide/navigation/navigation-3/naventrydecorators) that facilitates this. This decorator provides a
  • Network accessline 100
    a [`NavEntryDecorator`](https://developer.android.com/guide/navigation/navigation-3/naventrydecorators) that facilitates this. This decorator provides a
  • Network accessline 100
    a [`NavEntryDecorator`](https://developer.android.com/guide/navigation/navigation-3/naventrydecorators) that facilitates this. This decorator provides a
  • Network accessline 107
    To use [`NavEntryDecorator`](https://developer.android.com/guide/navigation/navigation-3/naventrydecorators#apply-decorators) for scoping `ViewModel`s to `NavEntry`s, follow
  • Network accessline 107
    To use [`NavEntryDecorator`](https://developer.android.com/guide/navigation/navigation-3/naventrydecorators#apply-decorators) for scoping `ViewModel`s to `NavEntry`s, follow
  • Network accessline 110
    1. Add the `androidx.lifecycle:lifecycle-viewmodel-navigation3` dependency to your `app/build.gradle.kts` file. 2. Add the default [`rememberSaveableStateHolderNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/na
  • Network accessline 110
    1. Add the `androidx.lifecycle:lifecycle-viewmodel-navigation3` dependency to your `app/build.gradle.kts` file. 2. Add the default [`rememberSaveableStateHolderNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/na
  • Network accessline 111
    2. Add the default [`rememberSaveableStateHolderNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/rememberSaveableStateHolderNavEntryDecorator.composable) to the list of `entryDecorators` when
  • Network accessline 111
    2. Add the default [`rememberSaveableStateHolderNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/rememberSaveableStateHolderNavEntryDecorator.composable) to the list of `entryDecorators` when
  • Network accessline 112
    3. Add [`rememberViewModelStoreNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/navigation3/rememberViewModelStoreNavEntryDecorator.composable) to the list of `entryDecorators`.
  • Network accessline 112
    3. Add [`rememberViewModelStoreNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/lifecycle/viewmodel/navigation3/rememberViewModelStoreNavEntryDecorator.composable) to the list of `entryDecorators`.

jetpack-compose/adaptive/references/android/studio/preview/compose-screenshot-testing-with-testsuites.md

  • Network accessline 1
    > [!WARNING] > **Experimental:** Compose Preview Screenshot Testing with AGP test suites is in active development. APIs and DSL syntax are subject to change. Report feedback and issues through the [issue tracker](https://issuetracker.google
  • Network accessline 1
    > [!WARNING] > **Experimental:** Compose Preview Screenshot Testing with AGP test suites is in active development. APIs and DSL syntax are subject to change. Report feedback and issues through the [issue tracker](https://issuetracker.google
  • Network accessline 2
    > **Experimental:** Compose Preview Screenshot Testing with AGP test suites is in active development. APIs and DSL syntax are subject to change. Report feedback and issues through the [issue tracker](https://issuetracker.google.com/issues/n
  • Network accessline 2
    > **Experimental:** Compose Preview Screenshot Testing with AGP test suites is in active development. APIs and DSL syntax are subject to change. Report feedback and issues through the [issue tracker](https://issuetracker.google.com/issues/n
  • Network accessline 4
    Starting with Android Gradle Plugin (AGP) 9.5.0-alpha03 and Compose Preview Screenshot Testing engine `0.0.1-alpha16`, screenshot testing is integrated with AGP's native [test suites](https://developer.android.com/reference/tools/gradle-api
  • Network accessline 4
    Starting with Android Gradle Plugin (AGP) 9.5.0-alpha03 and Compose Preview Screenshot Testing engine `0.0.1-alpha16`, screenshot testing is integrated with AGP's native [test suites](https://developer.android.com/reference/tools/gradle-api
  • Network accessline 6
    AGP's native [test suites](https://developer.android.com/reference/tools/gradle-api/9.5/com/android/build/api/dsl/AgpTestSuite) framework.
  • Network accessline 6
    AGP's native [test suites](https://developer.android.com/reference/tools/gradle-api/9.5/com/android/build/api/dsl/AgpTestSuite) framework.
  • Network accessline 19
    [View on GitHub](https://github.com/android/skills/blob/main/testing/testing-setup)
  • Network accessline 19
    [View on GitHub](https://github.com/android/skills/blob/main/testing/testing-setup)
  • Network accessline 23
    Use the `testing-setup` [Android skill](https://developer.android.com/tools/agents/android-skills) to develop a testing strategy and create screenshot tests. To install the skill from the [Android CLI](https://developer.android.com/tools/ag
  • Network accessline 23
    Use the `testing-setup` [Android skill](https://developer.android.com/tools/agents/android-skills) to develop a testing strategy and create screenshot tests. To install the skill from the [Android CLI](https://developer.android.com/tools/ag
  • Network accessline 36
    - Compose Screenshot Engine version 0.0.1-alpha16 or higher. - JDK version 17 or higher. - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/c
  • Network accessline 36
    - Compose Screenshot Engine version 0.0.1-alpha16 or higher. - JDK version 17 or higher. - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/c
  • Network accessline 38
    - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
  • Network accessline 38
    - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).

jetpack-compose/adaptive/references/custom_cursors.md

  • Network accessline 65
    - [Compose `pointerHoverIcon` API reference](https://developer.android.com/reference/kotlin/androidx/compose/ui/input/pointer/package-summary#pointerHoverIcon(androidx.compose.ui.Modifier,androidx.compose.ui.input.pointer.PointerIcon,kotlin
  • Network accessline 65
    - [Compose `pointerHoverIcon` API reference](https://developer.android.com/reference/kotlin/androidx/compose/ui/input/pointer/package-summary#pointerHoverIcon(androidx.compose.ui.Modifier,androidx.compose.ui.input.pointer.PointerIcon,kotlin
  • Network accessline 66
    - [Compose `PointerIcon` API reference](https://developer.android.com/reference/kotlin/androidx/compose/ui/input/pointer/PointerIcon)
  • Network accessline 66
    - [Compose `PointerIcon` API reference](https://developer.android.com/reference/kotlin/androidx/compose/ui/input/pointer/PointerIcon)
  • Network accessline 67
    - [Android pointer input overview](https://developer.android.com/develop/ui/compose/touch-input/pointer-input)
  • Network accessline 67
    - [Android pointer input overview](https://developer.android.com/develop/ui/compose/touch-input/pointer-input)

jetpack-compose/adaptive/references/foldable-tabletop.md

  • Network accessline 50
    For a reference implementation of Option B, see the [Tabletop posture recipe](https://developer.android.com/develop/adaptive-apps/cookbook/tabletop-posture-media-query-grid).
  • Network accessline 50
    For a reference implementation of Option B, see the [Tabletop posture recipe](https://developer.android.com/develop/adaptive-apps/cookbook/tabletop-posture-media-query-grid).
  • Network accessline 51
    [Tabletop posture recipe](https://developer.android.com/develop/adaptive-apps/cookbook/tabletop-posture-media-query-grid).
  • Network accessline 51
    [Tabletop posture recipe](https://developer.android.com/develop/adaptive-apps/cookbook/tabletop-posture-media-query-grid).

jetpack-compose/adaptive/references/keyboard_shortcuts.md

  • Network accessline 80
    Follow the Keyboard Shortcut Helper [guide](https://developer.android.com/develop/ui/compose/touch-input/keyboard-input/keyboard-shortcuts-helper).
  • Network accessline 80
    Follow the Keyboard Shortcut Helper [guide](https://developer.android.com/develop/ui/compose/touch-input/keyboard-input/keyboard-shortcuts-helper).
  • Network accessline 96
    - Compose keyboard input [guide](https://developer.android.com/develop/ui/compose/touch-input/keyboard-input/commands)
  • Network accessline 96
    - Compose keyboard input [guide](https://developer.android.com/develop/ui/compose/touch-input/keyboard-input/commands)
  • Network accessline 97
    - Android desktop keyboard interaction [guidance](https://developer.android.com/design/ui/desktop/guides/interaction/keyboard)
  • Network accessline 97
    - Android desktop keyboard interaction [guidance](https://developer.android.com/design/ui/desktop/guides/interaction/keyboard)

jetpack-compose/adaptive/references/tooltips.md

  • Network accessline 70
    - AndroidX Material 3 tooltip [samples](https://android.googlesource.com/platform/frameworks/support/+/androidx-main/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/TooltipSamples.kt)
  • Network accessline 70
    - AndroidX Material 3 tooltip [samples](https://android.googlesource.com/platform/frameworks/support/+/androidx-main/compose/material3/material3/samples/src/main/java/androidx/compose/material3/samples/TooltipSamples.kt)
  • Network accessline 71
    - Material Design 3 tooltip [guidelines](https://m3.material.io/components/tooltips/guidelines)
  • Network accessline 71
    - Material Design 3 tooltip [guidelines](https://m3.material.io/components/tooltips/guidelines)

jetpack-compose/ink/ink-app-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-brush-apis.md

  • Network accessline 1
    The [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush) APIs provide you with the tools to
  • Network accessline 1
    The [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush) APIs provide you with the tools to
  • Network accessline 8
    [View on GitHub](https://github.com/android/skills/tree/main/jetpack-compose/ink/ink-custom-brush-builder)
  • Network accessline 8
    [View on GitHub](https://github.com/android/skills/tree/main/jetpack-compose/ink/ink-custom-brush-builder)
  • Network accessline 12
    Use the `ink-custom-brush-builder` [Android skill](https://developer.android.com/tools/agents/android-skills) to design custom BrushFamily styles in Jetpack Compose with custom tips, dynamic behaviors, textures, and coats. To install the sk
  • Network accessline 12
    Use the `ink-custom-brush-builder` [Android skill](https://developer.android.com/tools/agents/android-skills) to design custom BrushFamily styles in Jetpack Compose with custom tips, dynamic behaviors, textures, and coats. To install the sk
  • Network accessline 20
    To create a brush, use the Compose [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush)
  • Network accessline 20
    To create a brush, use the Compose [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush)
  • Network accessline 21
    companion methods with named arguments such as [`Brush.Companion.createWithComposeColor`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush.Companion#(androidx.ink.brush.Brush.Companion).createWithComposeColor(androidx
  • Network accessline 21
    companion methods with named arguments such as [`Brush.Companion.createWithComposeColor`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush.Companion#(androidx.ink.brush.Brush.Companion).createWithComposeColor(androidx
  • Network accessline 22
    [`Brush.Companion.createWithComposeColor`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush.Companion#(androidx.ink.brush.Brush.Companion).createWithComposeColor(androidx.ink.brush.BrushFamily,androidx.compose.ui.grap
  • Network accessline 22
    [`Brush.Companion.createWithComposeColor`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush.Companion#(androidx.ink.brush.Brush.Companion).createWithComposeColor(androidx.ink.brush.BrushFamily,androidx.compose.ui.grap
  • Network accessline 25
    - `family`: The style of the brush, analogous to a typeface or font in text. See [`StockBrushes`](https://developer.android.com/reference/kotlin/androidx/ink/brush/StockBrushes) for available [`BrushFamily`](https://developer.android.com/re
  • Network accessline 25
    - `family`: The style of the brush, analogous to a typeface or font in text. See [`StockBrushes`](https://developer.android.com/reference/kotlin/androidx/ink/brush/StockBrushes) for available [`BrushFamily`](https://developer.android.com/re
  • Network accessline 26
    - `color`: The color of the brush. You can set the color using a [`ColorLong`](https://developer.android.com/reference/kotlin/androidx/annotation/ColorLong).
  • Network accessline 26
    - `color`: The color of the brush. You can set the color using a [`ColorLong`](https://developer.android.com/reference/kotlin/androidx/annotation/ColorLong).
  • Network accessline 44
    You can create a copy of an existing brush using the [`copyWithComposeColor()`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush#(androidx.ink.brush.Brush).copyWithComposeColor(androidx.compose.ui.graphics.Color,andro
  • Network accessline 44
    You can create a copy of an existing brush using the [`copyWithComposeColor()`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush#(androidx.ink.brush.Brush).copyWithComposeColor(androidx.compose.ui.graphics.Color,andro
  • Network accessline 45
    [`copyWithComposeColor()`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush#(androidx.ink.brush.Brush).copyWithComposeColor(androidx.compose.ui.graphics.Color,androidx.ink.brush.BrushFamily,kotlin.Float,kotlin.Float))
  • Network accessline 45
    [`copyWithComposeColor()`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush#(androidx.ink.brush.Brush).copyWithComposeColor(androidx.compose.ui.graphics.Color,androidx.ink.brush.BrushFamily,kotlin.Float,kotlin.Float))
  • Network accessline 64
    While [`StockBrushes`](https://developer.android.com/reference/kotlin/androidx/ink/brush/StockBrushes) provides a versatile set of
  • Network accessline 64
    While [`StockBrushes`](https://developer.android.com/reference/kotlin/androidx/ink/brush/StockBrushes) provides a versatile set of
  • Network accessline 69
    A custom `BrushFamily` is loaded from its serialized format. The required format is the gzipped binary encoding of the [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage
  • Network accessline 69
    A custom `BrushFamily` is loaded from its serialized format. The required format is the gzipped binary encoding of the [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage
  • Network accessline 70
    is the gzipped binary encoding of the [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage/src/commonMain/proto/brush_family.proto;l=1?q=brush_family.pr&sq). This lets you
  • Network accessline 70
    is the gzipped binary encoding of the [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage/src/commonMain/proto/brush_family.proto;l=1?q=brush_family.pr&sq). This lets you
  • Network accessline 71
    [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage/src/commonMain/proto/brush_family.proto;l=1?q=brush_family.pr&sq). This lets you load and use
  • Network accessline 71
    [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage/src/commonMain/proto/brush_family.proto;l=1?q=brush_family.pr&sq). This lets you load and use

jetpack-compose/ink/ink-app-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-draw-stroke.md

  • Network accessline 4
    To draw a stroke in Compose, use the [`InProgressStrokes`](https://developer.android.com/reference/kotlin/androidx/ink/authoring/compose/InProgressStrokes.composable#InProgressStrokes(androidx.ink.brush.Brush,kotlin.Function0,androidx.compo
  • Network accessline 4
    To draw a stroke in Compose, use the [`InProgressStrokes`](https://developer.android.com/reference/kotlin/androidx/ink/authoring/compose/InProgressStrokes.composable#InProgressStrokes(androidx.ink.brush.Brush,kotlin.Function0,androidx.compo
  • Network accessline 5
    [`InProgressStrokes`](https://developer.android.com/reference/kotlin/androidx/ink/authoring/compose/InProgressStrokes.composable#InProgressStrokes(androidx.ink.brush.Brush,kotlin.Function0,androidx.compose.ui.graphics.Matrix,androidx.compos
  • Network accessline 5
    [`InProgressStrokes`](https://developer.android.com/reference/kotlin/androidx/ink/authoring/compose/InProgressStrokes.composable#InProgressStrokes(androidx.ink.brush.Brush,kotlin.Function0,androidx.compose.ui.graphics.Matrix,androidx.compos

jetpack-compose/ink/ink-app-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-geometry-apis.md

  • Network accessline 25
    > [!NOTE] > **Note:** You can implement an eraser that only removes the parts of strokes it touches by checking if a stroke intersects with individual line segments of a [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/an
  • Network accessline 25
    > [!NOTE] > **Note:** You can implement an eraser that only removes the parts of strokes it touches by checking if a stroke intersects with individual line segments of a [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/an
  • Network accessline 26
    > **Note:** You can implement an eraser that only removes the parts of strokes it touches by checking if a stroke intersects with individual line segments of a [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink
  • Network accessline 26
    > **Note:** You can implement an eraser that only removes the parts of strokes it touches by checking if a stroke intersects with individual line segments of a [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink
  • Network accessline 28
    > Then, create new `StrokeInputBatch` and [`Stroke`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/Stroke) objects from the line segments that weren't intersected.
  • Network accessline 28
    > Then, create new `StrokeInputBatch` and [`Stroke`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/Stroke) objects from the line segments that weren't intersected.

jetpack-compose/ink/ink-app-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-state-preservation.md

  • Network accessline 10
    In Jetpack Compose, UI state is typically managed using [`remember`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary#remember)
  • Network accessline 10
    In Jetpack Compose, UI state is typically managed using [`remember`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary#remember)
  • Network accessline 11
    [`remember`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary#remember)
  • Network accessline 11
    [`remember`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary#remember)
  • Network accessline 12
    and [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0)). Wh
  • Network accessline 12
    and [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0)). Wh
  • Network accessline 13
    [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0)).
  • Network accessline 13
    [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0)).
  • Network accessline 14
    While [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0)) o
  • Network accessline 14
    While [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0)) o
  • Network accessline 15
    [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0))
  • Network accessline 15
    [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,kotlin.String,kotlin.Function0))
  • Network accessline 16
    offers automatic state preservation across configuration changes, its built-in capabilities are limited to primitive data types and objects that implement [`Parcelable`](https://developer.android.com/reference/kotlin/android/os/Parcelable) 
  • Network accessline 16
    offers automatic state preservation across configuration changes, its built-in capabilities are limited to primitive data types and objects that implement [`Parcelable`](https://developer.android.com/reference/kotlin/android/os/Parcelable) 
  • Network accessline 17
    capabilities are limited to primitive data types and objects that implement [`Parcelable`](https://developer.android.com/reference/kotlin/android/os/Parcelable) or [`Serializable`](https://developer.android.com/reference/java/io/Serializabl
  • Network accessline 17
    capabilities are limited to primitive data types and objects that implement [`Parcelable`](https://developer.android.com/reference/kotlin/android/os/Parcelable) or [`Serializable`](https://developer.android.com/reference/java/io/Serializabl
  • Network accessline 18
    [`Parcelable`](https://developer.android.com/reference/kotlin/android/os/Parcelable) or
  • Network accessline 18
    [`Parcelable`](https://developer.android.com/reference/kotlin/android/os/Parcelable) or
  • Network accessline 19
    [`Serializable`](https://developer.android.com/reference/java/io/Serializable).
  • Network accessline 19
    [`Serializable`](https://developer.android.com/reference/java/io/Serializable).
  • Network accessline 21
    For custom objects that contain complex properties, such as [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush), you must define explicit
  • Network accessline 21
    For custom objects that contain complex properties, such as [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush), you must define explicit
  • Network accessline 22
    [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush), you must define explicit
  • Network accessline 22
    [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush), you must define explicit
  • Network accessline 23
    serialization and deserialization mechanisms using a custom state saver. By defining a custom [`Saver`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/Saver) for the `Brush` object, you can preserve the bru
  • Network accessline 23
    serialization and deserialization mechanisms using a custom state saver. By defining a custom [`Saver`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/Saver) for the `Brush` object, you can preserve the bru
  • Network accessline 24
    defining a custom [`Saver`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/Saver)
  • Network accessline 24
    defining a custom [`Saver`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/Saver)
  • Network accessline 34
    You can then use the custom [`Saver`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/Saver) to
  • Network accessline 34
    You can then use the custom [`Saver`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/Saver) to
  • Network accessline 47
    - [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush): Includes numeric fields (size, epsilon), color, and [`BrushFamily`](https://developer.android.com/reference/kotlin/androidx/ink/brush/BrushFamily).
  • Network accessline 47
    - [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush): Includes numeric fields (size, epsilon), color, and [`BrushFamily`](https://developer.android.com/reference/kotlin/androidx/ink/brush/BrushFamily).
  • Network accessline 48
    - [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch): A list of input points with numeric fields.
  • Network accessline 48
    - [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch): A list of input points with numeric fields.
  • Network accessline 50
    The Storage module simplifies compactly serializing the most complex part: the [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch).
  • Network accessline 50
    The Storage module simplifies compactly serializing the most complex part: the [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch).
  • Network accessline 51
    [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch).
  • Network accessline 51
    [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch).
  • Network accessline 53
    > [!NOTE] > **Note:** See data transfer objects such as `SerializedBrush` and `SerializedStroke` as well as the `Converters` helper class in the [*Data object and converter > helpers* section](https://developer.android.com/develop/ui/compos
  • Network accessline 53
    > [!NOTE] > **Note:** See data transfer objects such as `SerializedBrush` and `SerializedStroke` as well as the `Converters` helper class in the [*Data object and converter > helpers* section](https://developer.android.com/develop/ui/compos
  • Network accessline 55
    > helpers* section](https://developer.android.com/develop/ui/compose/touch-input/stylus-input/ink-api-state-preservation#data_object_and_converter_helpers).
  • Network accessline 55
    > helpers* section](https://developer.android.com/develop/ui/compose/touch-input/stylus-input/ink-api-state-preservation#data_object_and_converter_helpers).
  • Network accessline 82
    - Retrieve the saved binary data for the `StrokeInputBatch` and deserialize it using the storage module's [decode()](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch.Companion#(androidx.ink.strokes.Stroke
  • Network accessline 82
    - Retrieve the saved binary data for the `StrokeInputBatch` and deserialize it using the storage module's [decode()](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch.Companion#(androidx.ink.strokes.Stroke
  • Network accessline 83
    - Retrieve the saved `Brush` properties and create the brush. - Create the final stroke using the recreated brush and the deserialized   [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBat
  • Network accessline 83
    - Retrieve the saved `Brush` properties and create the brush. - Create the final stroke using the recreated brush and the deserialized   [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBat
  • Network accessline 85
    [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch).
  • Network accessline 85
    [`StrokeInputBatch`](https://developer.android.com/reference/kotlin/androidx/ink/strokes/StrokeInputBatch).
  • Network accessline 134
    > [!NOTE] > **Note:** For details on implementing the gestures themselves, refer to the Jetpack Compose documentation for [detectTransformGestures](https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/package-
  • Network accessline 134
    > [!NOTE] > **Note:** For details on implementing the gestures themselves, refer to the Jetpack Compose documentation for [detectTransformGestures](https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/package-
  • Network accessline 135
    > **Note:** For details on implementing the gestures themselves, refer to the Jetpack Compose documentation for [detectTransformGestures](https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/package-summary#(a
  • Network accessline 135
    > **Note:** For details on implementing the gestures themselves, refer to the Jetpack Compose documentation for [detectTransformGestures](https://developer.android.com/reference/kotlin/androidx/compose/foundation/gestures/package-summary#(a
  • Network accessline 143
    To export a scene, you can render your strokes to an offscreen bitmap instead of directly to the screen. Use [`Android's Picture API`](https://developer.android.com/reference/android/graphics/Picture), which lets you record drawings on a ca
  • Network accessline 143
    To export a scene, you can render your strokes to an offscreen bitmap instead of directly to the screen. Use [`Android's Picture API`](https://developer.android.com/reference/android/graphics/Picture), which lets you record drawings on a ca
  • Network accessline 144
    directly to the screen. Use [`Android's Picture API`](https://developer.android.com/reference/android/graphics/Picture), which lets you record drawings on a canvas without needing a visible UI component.
  • Network accessline 144
    directly to the screen. Use [`Android's Picture API`](https://developer.android.com/reference/android/graphics/Picture), which lets you record drawings on a canvas without needing a visible UI component.
  • Network accessline 145
    [`Android's Picture API`](https://developer.android.com/reference/android/graphics/Picture), which lets you record drawings on a canvas without
  • Network accessline 145
    [`Android's Picture API`](https://developer.android.com/reference/android/graphics/Picture), which lets you record drawings on a canvas without
  • Network accessline 149
    to get a `Canvas`, and then using your existing `CanvasStrokeRenderer` to draw each stroke onto that `Canvas`. After you record all the drawing commands, you can use the `Picture` to create a [`Bitmap`](https://developer.android.com/referen
  • Network accessline 149
    to get a `Canvas`, and then using your existing `CanvasStrokeRenderer` to draw each stroke onto that `Canvas`. After you record all the drawing commands, you can use the `Picture` to create a [`Bitmap`](https://developer.android.com/referen
  • Network accessline 150
    each stroke onto that `Canvas`. After you record all the drawing commands, you can use the `Picture` to create a [`Bitmap`](https://developer.android.com/reference/android/graphics/Bitmap), which you can then compress and save to a file.
  • Network accessline 150
    each stroke onto that `Canvas`. After you record all the drawing commands, you can use the `Picture` to create a [`Bitmap`](https://developer.android.com/reference/android/graphics/Bitmap), which you can then compress and save to a file.
  • Network accessline 151
    can use the `Picture` to create a [`Bitmap`](https://developer.android.com/reference/android/graphics/Bitmap),
  • Network accessline 151
    can use the `Picture` to create a [`Bitmap`](https://developer.android.com/reference/android/graphics/Bitmap),

jetpack-compose/ink/ink-custom-brush-builder/references/android/develop/ui/compose/touch-input/stylus-input/ink-api-brush-apis.md

  • Network accessline 1
    The [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush) APIs provide you with the tools to
  • Network accessline 1
    The [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush) APIs provide you with the tools to
  • Network accessline 8
    [View on GitHub](https://github.com/android/skills/tree/main/jetpack-compose/ink/ink-custom-brush-builder)
  • Network accessline 8
    [View on GitHub](https://github.com/android/skills/tree/main/jetpack-compose/ink/ink-custom-brush-builder)
  • Network accessline 12
    Use the `ink-custom-brush-builder` [Android skill](https://developer.android.com/tools/agents/android-skills) to design custom BrushFamily styles in Jetpack Compose with custom tips, dynamic behaviors, textures, and coats. To install the sk
  • Network accessline 12
    Use the `ink-custom-brush-builder` [Android skill](https://developer.android.com/tools/agents/android-skills) to design custom BrushFamily styles in Jetpack Compose with custom tips, dynamic behaviors, textures, and coats. To install the sk
  • Network accessline 20
    To create a brush, use the Compose [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush)
  • Network accessline 20
    To create a brush, use the Compose [`Brush`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush)
  • Network accessline 21
    companion methods with named arguments such as [`Brush.Companion.createWithComposeColor`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush.Companion#(androidx.ink.brush.Brush.Companion).createWithComposeColor(androidx
  • Network accessline 21
    companion methods with named arguments such as [`Brush.Companion.createWithComposeColor`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush.Companion#(androidx.ink.brush.Brush.Companion).createWithComposeColor(androidx
  • Network accessline 22
    [`Brush.Companion.createWithComposeColor`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush.Companion#(androidx.ink.brush.Brush.Companion).createWithComposeColor(androidx.ink.brush.BrushFamily,androidx.compose.ui.grap
  • Network accessline 22
    [`Brush.Companion.createWithComposeColor`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush.Companion#(androidx.ink.brush.Brush.Companion).createWithComposeColor(androidx.ink.brush.BrushFamily,androidx.compose.ui.grap
  • Network accessline 25
    - `family`: The style of the brush, analogous to a typeface or font in text. See [`StockBrushes`](https://developer.android.com/reference/kotlin/androidx/ink/brush/StockBrushes) for available [`BrushFamily`](https://developer.android.com/re
  • Network accessline 25
    - `family`: The style of the brush, analogous to a typeface or font in text. See [`StockBrushes`](https://developer.android.com/reference/kotlin/androidx/ink/brush/StockBrushes) for available [`BrushFamily`](https://developer.android.com/re
  • Network accessline 26
    - `color`: The color of the brush. You can set the color using a [`ColorLong`](https://developer.android.com/reference/kotlin/androidx/annotation/ColorLong).
  • Network accessline 26
    - `color`: The color of the brush. You can set the color using a [`ColorLong`](https://developer.android.com/reference/kotlin/androidx/annotation/ColorLong).
  • Network accessline 44
    You can create a copy of an existing brush using the [`copyWithComposeColor()`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush#(androidx.ink.brush.Brush).copyWithComposeColor(androidx.compose.ui.graphics.Color,andro
  • Network accessline 44
    You can create a copy of an existing brush using the [`copyWithComposeColor()`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush#(androidx.ink.brush.Brush).copyWithComposeColor(androidx.compose.ui.graphics.Color,andro
  • Network accessline 45
    [`copyWithComposeColor()`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush#(androidx.ink.brush.Brush).copyWithComposeColor(androidx.compose.ui.graphics.Color,androidx.ink.brush.BrushFamily,kotlin.Float,kotlin.Float))
  • Network accessline 45
    [`copyWithComposeColor()`](https://developer.android.com/reference/kotlin/androidx/ink/brush/Brush#(androidx.ink.brush.Brush).copyWithComposeColor(androidx.compose.ui.graphics.Color,androidx.ink.brush.BrushFamily,kotlin.Float,kotlin.Float))
  • Network accessline 64
    While [`StockBrushes`](https://developer.android.com/reference/kotlin/androidx/ink/brush/StockBrushes) provides a versatile set of
  • Network accessline 64
    While [`StockBrushes`](https://developer.android.com/reference/kotlin/androidx/ink/brush/StockBrushes) provides a versatile set of
  • Network accessline 69
    A custom `BrushFamily` is loaded from its serialized format. The required format is the gzipped binary encoding of the [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage
  • Network accessline 69
    A custom `BrushFamily` is loaded from its serialized format. The required format is the gzipped binary encoding of the [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage
  • Network accessline 70
    is the gzipped binary encoding of the [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage/src/commonMain/proto/brush_family.proto;l=1?q=brush_family.pr&sq). This lets you
  • Network accessline 70
    is the gzipped binary encoding of the [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage/src/commonMain/proto/brush_family.proto;l=1?q=brush_family.pr&sq). This lets you
  • Network accessline 71
    [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage/src/commonMain/proto/brush_family.proto;l=1?q=brush_family.pr&sq). This lets you load and use
  • Network accessline 71
    [BrushFamily protocol buffer](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:ink/ink-storage/src/commonMain/proto/brush_family.proto;l=1?q=brush_family.pr&sq). This lets you load and use

jetpack-compose/jetpack-compose-performance/references/android/develop/ui/compose/custom-modifiers.md

  • Network accessline 1
    Compose provides many [modifiers](https://developer.android.com/develop/ui/compose/modifiers) for common behaviors right out of the box,
  • Network accessline 1
    Compose provides many [modifiers](https://developer.android.com/develop/ui/compose/modifiers) for common behaviors right out of the box,
  • Network accessline 20
    It is often possible to create custom modifiers by using existing modifiers. For example, [`Modifier.clip()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).clip(androidx.compose.u
  • Network accessline 20
    It is often possible to create custom modifiers by using existing modifiers. For example, [`Modifier.clip()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).clip(androidx.compose.u
  • Network accessline 21
    example, [`Modifier.clip()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).clip(androidx.compose.ui.graphics.Shape)) is implemented using the `graphicsLayer`
  • Network accessline 21
    example, [`Modifier.clip()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).clip(androidx.compose.ui.graphics.Shape)) is implemented using the `graphicsLayer`
  • Network accessline 52
    > [!NOTE] > **Note:** `composed {}` is no longer recommended due to performance concerns. See [Migrate from `Modifier.composed` to `Modifier.Node`](https://developer.android.com/develop/ui/compose/custom-modifiers-node) for details on how t
  • Network accessline 52
    > [!NOTE] > **Note:** `composed {}` is no longer recommended due to performance concerns. See [Migrate from `Modifier.composed` to `Modifier.Node`](https://developer.android.com/develop/ui/compose/custom-modifiers-node) for details on how t
  • Network accessline 53
    > **Note:** `composed {}` is no longer recommended due to performance concerns. See [Migrate from `Modifier.composed` to `Modifier.Node`](https://developer.android.com/develop/ui/compose/custom-modifiers-node) for details on how to migrate 
  • Network accessline 53
    > **Note:** `composed {}` is no longer recommended due to performance concerns. See [Migrate from `Modifier.composed` to `Modifier.Node`](https://developer.android.com/develop/ui/compose/custom-modifiers-node) for details on how to migrate 
  • Network accessline 55
    Using a composable modifier factory to create a modifier also lets you use higher level compose APIs, such as [`animate*AsState`](https://developer.android.com/develop/ui/compose/animation/value-based#animate-as-state) and other [Compose
  • Network accessline 55
    Using a composable modifier factory to create a modifier also lets you use higher level compose APIs, such as [`animate*AsState`](https://developer.android.com/develop/ui/compose/animation/value-based#animate-as-state) and other [Compose
  • Network accessline 56
    higher level compose APIs, such as [`animate*AsState`](https://developer.android.com/develop/ui/compose/animation/value-based#animate-as-state) and other [Compose
  • Network accessline 56
    higher level compose APIs, such as [`animate*AsState`](https://developer.android.com/develop/ui/compose/animation/value-based#animate-as-state) and other [Compose
  • Network accessline 57
    state backed animation APIs](https://developer.android.com/develop/ui/compose/animation/choose-api). For example, the following snippet shows a
  • Network accessline 57
    state backed animation APIs](https://developer.android.com/develop/ui/compose/animation/choose-api). For example, the following snippet shows a
  • Network accessline 125
    If this is not how you expect your modifier to work, use a custom [`Modifier.Node`](https://developer.android.com/develop/ui/compose/custom-modifiers#implement-custom) instead, as composition locals will be
  • Network accessline 125
    If this is not how you expect your modifier to work, use a custom [`Modifier.Node`](https://developer.android.com/develop/ui/compose/custom-modifiers#implement-custom) instead, as composition locals will be
  • Network accessline 126
    [`Modifier.Node`](https://developer.android.com/develop/ui/compose/custom-modifiers#implement-custom) instead, as composition locals will be
  • Network accessline 126
    [`Modifier.Node`](https://developer.android.com/develop/ui/compose/custom-modifiers#implement-custom) instead, as composition locals will be
  • Network accessline 131
    Composable factory modifiers are never [skipped](https://developer.android.com/develop/ui/compose/mental-model#skips) because composable functions
  • Network accessline 131
    Composable factory modifiers are never [skipped](https://developer.android.com/develop/ui/compose/mental-model#skips) because composable functions
  • Network accessline 164
    [`Modifier.Node`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Node) is a lower level API for creating modifiers in Compose. It
  • Network accessline 164
    [`Modifier.Node`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Node) is a lower level API for creating modifiers in Compose. It
  • Network accessline 168
    > [!NOTE] > **Note:** There is another API for creating custom modifiers, [`composed {}`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).composed(kotlin.Function1,kotlin.Function1)
  • Network accessline 168
    > [!NOTE] > **Note:** There is another API for creating custom modifiers, [`composed {}`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).composed(kotlin.Function1,kotlin.Function1)
  • Network accessline 169
    > **Note:** There is another API for creating custom modifiers, [`composed {}`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).composed(kotlin.Function1,kotlin.Function1)). This AP
  • Network accessline 169
    > **Note:** There is another API for creating custom modifiers, [`composed {}`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).composed(kotlin.Function1,kotlin.Function1)). This AP
  • Network accessline 175
    - A [`Modifier.Node`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/Modifier.kt;l=184) implementation that holds the logic and state of your modifier.
  • Network accessline 175
    - A [`Modifier.Node`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/Modifier.kt;l=184) implementation that holds the logic and state of your modifier.
  • Network accessline 176
    - A [`ModifierNodeElement`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/ModifierNodeElement.kt;l=39) that creates and updates modifier node instanc
  • Network accessline 176
    - A [`ModifierNodeElement`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/ModifierNodeElement.kt;l=39) that creates and updates modifier node instanc
  • Network accessline 213
    |---|---|---| | **Node** | **Usage** | **Sample Link** | | [`LayoutModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt
  • Network accessline 213
    |---|---|---| | **Node** | **Usage** | **Sample Link** | | [`LayoutModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt
  • Network accessline 214
    | **Node** | **Usage** | **Sample Link** | | [`LayoutModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt) | A `Modifie
  • Network accessline 214
    | **Node** | **Usage** | **Sample Link** | | [`LayoutModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt) | A `Modifie
  • Network accessline 215
    | [`LayoutModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt) | A `Modifier.Node` that changes how its wrapped conten
  • Network accessline 215
    | [`LayoutModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt) | A `Modifier.Node` that changes how its wrapped conten
  • Network accessline 216
    | [`DrawModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/DrawModifierNode.kt) | A `Modifier.Node` that draws into the space of the layout
  • Network accessline 216
    | [`DrawModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/DrawModifierNode.kt) | A `Modifier.Node` that draws into the space of the layout
  • Network accessline 217
    | [`CompositionLocalConsumerModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/CompositionLocalConsumerModifierNode.kt) | Implementing this
  • Network accessline 217
    | [`CompositionLocalConsumerModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/CompositionLocalConsumerModifierNode.kt) | Implementing this
  • Network accessline 218
    | [`SemanticsModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/SemanticsModifierNode.kt) | A `Modifier.Node` that adds semantics key/value
  • Network accessline 218
    | [`SemanticsModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/SemanticsModifierNode.kt) | A `Modifier.Node` that adds semantics key/value
  • Network accessline 219
    | [`PointerInputModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/PointerInputModifierNode.kt) | A `Modifier.Node` that receives [PointerI
  • Network accessline 219
    | [`PointerInputModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/PointerInputModifierNode.kt) | A `Modifier.Node` that receives [PointerI
  • Network accessline 220
    | [`ParentDataModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/ParentDataModifierNode.kt) | A `Modifier.Node` that provides data to the p
  • Network accessline 220
    | [`ParentDataModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/ParentDataModifierNode.kt) | A `Modifier.Node` that provides data to the p
  • Network accessline 221
    | [`LayoutAwareModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutAwareModifierNode.kt) | A `Modifier.Node` which receives `onMeasure
  • Network accessline 221
    | [`LayoutAwareModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutAwareModifierNode.kt) | A `Modifier.Node` which receives `onMeasure
  • Network accessline 222
    | [`GlobalPositionAwareModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/GlobalPositionAwareModifierNode.kt) | A `Modifier.Node` which rec
  • Network accessline 222
    | [`GlobalPositionAwareModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/GlobalPositionAwareModifierNode.kt) | A `Modifier.Node` which rec
  • Network accessline 223
    | [`ObserverModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/ObserverModifierNode.kt) | `Modifier.Node`s that implement `ObserverNode` ca
  • Network accessline 223
    | [`ObserverModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/ObserverModifierNode.kt) | `Modifier.Node`s that implement `ObserverNode` ca
  • Network accessline 224
    | [`DelegatingNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/DelegatingNode.kt) | A `Modifier.Node` which is able to delegate work to other `Mo
  • Network accessline 224
    | [`DelegatingNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/DelegatingNode.kt) | A `Modifier.Node` which is able to delegate work to other `Mo
  • Network accessline 225
    | [`TraversableNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/TraversableNode.kt;l=28) | Allows `Modifier.Node` classes to traverse up/down the
  • Network accessline 225
    | [`TraversableNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/TraversableNode.kt;l=28) | Allows `Modifier.Node` classes to traverse up/down the
  • Network accessline 229
    on the element, the node triggers a redraw and its color correctly updates. It is possible to opt out of auto-invalidation, as detailed in the [Opt out of node auto-invalidation](https://developer.android.com/develop/ui/compose/custom-modif
  • Network accessline 229
    on the element, the node triggers a redraw and its color correctly updates. It is possible to opt out of auto-invalidation, as detailed in the [Opt out of node auto-invalidation](https://developer.android.com/develop/ui/compose/custom-modif
  • Network accessline 231
    [Opt out of node auto-invalidation](https://developer.android.com/develop/ui/compose/custom-modifiers#autoinvalidation) section.
  • Network accessline 231
    [Opt out of node auto-invalidation](https://developer.android.com/develop/ui/compose/custom-modifiers#autoinvalidation) section.
  • Network accessline 267
    data classes for binary compatibility reasons, then you can manually implement `equals` and `hashCode`, for example, the [padding modifier element](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/foundati
  • Network accessline 267
    data classes for binary compatibility reasons, then you can manually implement `equals` and `hashCode`, for example, the [padding modifier element](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/foundati
  • Network accessline 269
    [padding modifier element](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Padding.kt;l=358).
  • Network accessline 269
    [padding modifier element](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Padding.kt;l=358).
  • Network accessline 362
    over modifiers that are just created with a composable factory is that they can read the value of the composition local from where the modifier is used in your UI tree, not where the modifier is allocated, using [`currentValueOf`](https://d
  • Network accessline 362
    over modifiers that are just created with a composable factory is that they can read the value of the composition local from where the modifier is used in your UI tree, not where the modifier is allocated, using [`currentValueOf`](https://d
  • Network accessline 364
    UI tree, not where the modifier is allocated, using [`currentValueOf`](https://developer.android.com/reference/kotlin/androidx/compose/ui/node/CompositionLocalConsumerModifierNode#(androidx.compose.ui.node.CompositionLocalConsumerModifierNo
  • Network accessline 364
    UI tree, not where the modifier is allocated, using [`currentValueOf`](https://developer.android.com/reference/kotlin/androidx/compose/ui/node/CompositionLocalConsumerModifierNode#(androidx.compose.ui.node.CompositionLocalConsumerModifierNo
  • Network accessline 370
    - `DrawModifierNode`: [`ContentDrawScope`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/DrawModifierNode.kt;l=31)
  • Network accessline 370
    - `DrawModifierNode`: [`ContentDrawScope`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/DrawModifierNode.kt;l=31)
  • Network accessline 371
    - `LayoutModifierNode`: [`MeasureScope`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt;l=64) \& [`IntrinsicMeasureScope`](https
  • Network accessline 371
    - `LayoutModifierNode`: [`MeasureScope`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt;l=64) \& [`IntrinsicMeasureScope`](https
  • Network accessline 372
    - `SemanticsModifierNode`: [`SemanticsPropertyReceiver`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt;l=788)
  • Network accessline 372
    - `SemanticsModifierNode`: [`SemanticsPropertyReceiver`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt;l=788)
  • Network accessline 394
    To react to state changes outside of a scope and automatically update your modifier, use an [`ObserverModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/co
  • Network accessline 394
    To react to state changes outside of a scope and automatically update your modifier, use an [`ObserverModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/co
  • Network accessline 395
    modifier, use an [`ObserverModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/ObserverModifierNode.kt).
  • Network accessline 395
    modifier, use an [`ObserverModifierNode`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/ObserverModifierNode.kt).
  • Network accessline 397
    For example, [`Modifier.scrollable`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt;l=269) uses this techniq
  • Network accessline 397
    For example, [`Modifier.scrollable`](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Scrollable.kt;l=269) uses this techniq
  • Network accessline 432
    `Modifier.Node` implementations have access to a `coroutineScope`. This allows for use of the [Compose Animatable APIs](https://developer.android.com/develop/ui/compose/animation/value-based#animatable). For example, this snippet modifies
  • Network accessline 432
    `Modifier.Node` implementations have access to a `coroutineScope`. This allows for use of the [Compose Animatable APIs](https://developer.android.com/develop/ui/compose/animation/value-based#animatable). For example, this snippet modifies
  • Network accessline 433
    for use of the [Compose Animatable APIs](https://developer.android.com/develop/ui/compose/animation/value-based#animatable). For example, this snippet modifies
  • Network accessline 433
    for use of the [Compose Animatable APIs](https://developer.android.com/develop/ui/compose/animation/value-based#animatable). For example, this snippet modifies
  • Network accessline 436
    > [!NOTE] > **Note:** `Modifier.Node` can be reused in a composable. You can set the new state either by setting it in [`onAttach`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Node#onAttach()), or by resettin
  • Network accessline 436
    > [!NOTE] > **Note:** `Modifier.Node` can be reused in a composable. You can set the new state either by setting it in [`onAttach`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Node#onAttach()), or by resettin
  • Network accessline 437
    > **Note:** `Modifier.Node` can be reused in a composable. You can set the new state either by setting it in [`onAttach`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Node#onAttach()), or by resetting in [`onR
  • Network accessline 437
    > **Note:** `Modifier.Node` can be reused in a composable. You can set the new state either by setting it in [`onAttach`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Node#onAttach()), or by resetting in [`onR

jetpack-compose/jetpack-compose-performance/references/android/develop/ui/compose/performance/backwards-write.md

  • Network accessline 1
    Compose executes a frame in three strictly ordered, forward-flowing phases: ![Three forward-flowing phases: 1. Composition, 2. Layout, 3. Drawing](https://developer.android.com/static/develop/ui/compose/performance/images/compose_phases.png
  • Network accessline 1
    Compose executes a frame in three strictly ordered, forward-flowing phases: ![Three forward-flowing phases: 1. Composition, 2. Layout, 3. Drawing](https://developer.android.com/static/develop/ui/compose/performance/images/compose_phases.png
  • Network accessline 2
    ![Three forward-flowing phases: 1. Composition, 2. Layout, 3. Drawing](https://developer.android.com/static/develop/ui/compose/performance/images/compose_phases.png) **Figure 1.** The three phases of a Compose frame
  • Network accessline 2
    ![Three forward-flowing phases: 1. Composition, 2. Layout, 3. Drawing](https://developer.android.com/static/develop/ui/compose/performance/images/compose_phases.png) **Figure 1.** The three phases of a Compose frame
  • Network accessline 18
    recompose by scheduling an earlier phase or composable to run again. A backwards write is an unoptimized recomposition loop. ![Example of backwards write through the recomposition loop phases](https://developer.android.com/static/develop/ui
  • Network accessline 18
    recompose by scheduling an earlier phase or composable to run again. A backwards write is an unoptimized recomposition loop. ![Example of backwards write through the recomposition loop phases](https://developer.android.com/static/develop/ui
  • Network accessline 20
    ![Example of backwards write through the recomposition loop phases](https://developer.android.com/static/develop/ui/compose/performance/images/recomposition-loop.png) **Figure 2.** Example of backwards write through the recomposition loop p
  • Network accessline 20
    ![Example of backwards write through the recomposition loop phases](https://developer.android.com/static/develop/ui/compose/performance/images/recomposition-loop.png) **Figure 2.** Example of backwards write through the recomposition loop p

jetpack-compose/jetpack-compose-performance/references/android/develop/ui/compose/performance/stability/strongskipping.md

  • Network accessline 4
    - Composables with unstable parameters become [skippable](https://developer.android.com/develop/ui/compose/performance/stability#functions)
  • Network accessline 4
    - Composables with unstable parameters become [skippable](https://developer.android.com/develop/ui/compose/performance/stability#functions)
  • Network accessline 5
    - Lambdas with unstable captures are [remembered](https://developer.android.com/develop/ui/compose/state#state-in-composables)
  • Network accessline 5
    - Lambdas with unstable captures are [remembered](https://developer.android.com/develop/ui/compose/state#state-in-composables)
  • Network accessline 7
    > [!NOTE] > **Note:** Strong Skipping is enabled by default in Kotlin 2.0.20. The full list of options are available in the [Compose Compiler Gradle Plugin reference](https://kotlinlang.org/docs/compose-compiler-options.html).
  • Network accessline 7
    > [!NOTE] > **Note:** Strong Skipping is enabled by default in Kotlin 2.0.20. The full list of options are available in the [Compose Compiler Gradle Plugin reference](https://kotlinlang.org/docs/compose-compiler-options.html).
  • Network accessline 8
    > **Note:** Strong Skipping is enabled by default in Kotlin 2.0.20. The full list of options are available in the [Compose Compiler Gradle Plugin reference](https://kotlinlang.org/docs/compose-compiler-options.html).
  • Network accessline 8
    > **Note:** Strong Skipping is enabled by default in Kotlin 2.0.20. The full list of options are available in the [Compose Compiler Gradle Plugin reference](https://kotlinlang.org/docs/compose-compiler-options.html).
  • Network accessline 26
    Strong skipping mode relaxes some of the [stability](https://developer.android.com/develop/ui/compose/performance/stability) rules normally applied
  • Network accessline 26
    Strong skipping mode relaxes some of the [stability](https://developer.android.com/develop/ui/compose/performance/stability) rules normally applied
  • Network accessline 37
    To determine whether to skip a composable during recomposition, Compose compares the value of each parameter with their previous values. The type of comparison depends on the [stability](https://developer.android.com/develop/ui/compose/perf
  • Network accessline 37
    To determine whether to skip a composable during recomposition, Compose compares the value of each parameter with their previous values. The type of comparison depends on the [stability](https://developer.android.com/develop/ui/compose/perf
  • Network accessline 39
    depends on the [stability](https://developer.android.com/develop/ui/compose/performance/stability) of the parameter.
  • Network accessline 39
    depends on the [stability](https://developer.android.com/develop/ui/compose/performance/stability) of the parameter.
  • Network accessline 69
    Strong skipping mode also enables more [memoization](https://en.wikipedia.org/wiki/Memoization) of lambdas
  • Network accessline 69
    Strong skipping mode also enables more [memoization](https://en.wikipedia.org/wiki/Memoization) of lambdas
  • Network accessline 137
    Enabling strong skipping in [Now In Android](https://github.com/android/nowinandroid) increased the APK
  • Network accessline 137
    Enabling strong skipping in [Now In Android](https://github.com/android/nowinandroid) increased the APK

jetpack-compose/jetpack-compose-performance/references/layouts.md

  • Network accessline 123
    `Modifier.layout` instead of passing them back to Composition. For more information on phase flow and eliminating recomposition loops, see the [Backwards Write documentation](https://developer.android.com/develop/ui/compose/performance/back
  • Network accessline 123
    `Modifier.layout` instead of passing them back to Composition. For more information on phase flow and eliminating recomposition loops, see the [Backwards Write documentation](https://developer.android.com/develop/ui/compose/performance/back
  • Network accessline 125
    [Backwards Write documentation](https://developer.android.com/develop/ui/compose/performance/backwards-write).
  • Network accessline 125
    [Backwards Write documentation](https://developer.android.com/develop/ui/compose/performance/backwards-write).

jetpack-compose/jetpack-compose-performance/references/state-and-stability.md

  • Network accessline 210
    For more information, see the [Backwards Write documentation](https://developer.android.com/develop/ui/compose/performance/backwards-write).
  • Network accessline 210
    For more information, see the [Backwards Write documentation](https://developer.android.com/develop/ui/compose/performance/backwards-write).
  • Network accessline 597
    For more information, see the [Strong Skipping Mode documentation](https://developer.android.com/develop/ui/compose/performance/stability/strongskipping).
  • Network accessline 597
    For more information, see the [Strong Skipping Mode documentation](https://developer.android.com/develop/ui/compose/performance/stability/strongskipping).

jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/designsystems/migrate-xml-theme-to-compose.md

  • Network accessline 7
    You can use the [Material Theme Builder](https://m3.material.io/theme-builder)
  • Network accessline 7
    You can use the [Material Theme Builder](https://m3.material.io/theme-builder)
  • Network accessline 27
    - This guide focuses on migrating to Material 3 only. For migrating from alternative design systems, see [Material 2](https://developer.android.com/develop/ui/compose/designsystems/material) or [Custom design systems in Compose](https://dev
  • Network accessline 27
    - This guide focuses on migrating to Material 3 only. For migrating from alternative design systems, see [Material 2](https://developer.android.com/develop/ui/compose/designsystems/material) or [Custom design systems in Compose](https://dev
  • Network accessline 85
    For more details, see [shapes](https://developer.android.com/develop/ui/compose/designsystems/material3#shapes).
  • Network accessline 85
    For more details, see [shapes](https://developer.android.com/develop/ui/compose/designsystems/material3#shapes).
  • Network accessline 91
    For more details, see [typography](https://developer.android.com/develop/ui/compose/designsystems/material3#typography).
  • Network accessline 91
    For more details, see [typography](https://developer.android.com/develop/ui/compose/designsystems/material3#typography).
  • Network accessline 126
    Styles have no **direct** equivalent in Compose - instead styles are passed as: parameters or modifiers to composables, using the [new, experimental Styles API](https://developer.android.com/develop/ui/compose/styles) defined in the AppThem
  • Network accessline 126
    Styles have no **direct** equivalent in Compose - instead styles are passed as: parameters or modifiers to composables, using the [new, experimental Styles API](https://developer.android.com/develop/ui/compose/styles) defined in the AppThem
  • Network accessline 127
    parameters or modifiers to composables, using the [new, experimental Styles API](https://developer.android.com/develop/ui/compose/styles) defined in the AppTheme, or by creating layered, reusable composable variations with the defined style
  • Network accessline 127
    parameters or modifiers to composables, using the [new, experimental Styles API](https://developer.android.com/develop/ui/compose/styles) defined in the AppTheme, or by creating layered, reusable composable variations with the defined style
  • Network accessline 128
    [new, experimental Styles API](https://developer.android.com/develop/ui/compose/styles) defined in the AppTheme, or by creating
  • Network accessline 128
    [new, experimental Styles API](https://developer.android.com/develop/ui/compose/styles) defined in the AppTheme, or by creating

jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/compose-in-views.md

  • Network accessline 37
    > dependency to your `build.gradle` file. > > See the [Activity releases page](https://developer.android.com/jetpack/androidx/releases/activity)
  • Network accessline 37
    > dependency to your `build.gradle` file. > > See the [Activity releases page](https://developer.android.com/jetpack/androidx/releases/activity)
  • Network accessline 38
    > > See the [Activity releases page](https://developer.android.com/jetpack/androidx/releases/activity) > to find out the latest version.
  • Network accessline 38
    > > See the [Activity releases page](https://developer.android.com/jetpack/androidx/releases/activity) > to find out the latest version.
  • Network accessline 39
    > See the [Activity releases page](https://developer.android.com/jetpack/androidx/releases/activity)
  • Network accessline 39
    > See the [Activity releases page](https://developer.android.com/jetpack/androidx/releases/activity)
  • Network accessline 44
    [`ViewCompositionStrategy`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy)
  • Network accessline 44
    [`ViewCompositionStrategy`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy)
  • Network accessline 45
    defines when the Composition should be disposed. The default, [`ViewCompositionStrategy.Default`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy#Default()), disposes the Composition when 
  • Network accessline 45
    defines when the Composition should be disposed. The default, [`ViewCompositionStrategy.Default`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy#Default()), disposes the Composition when 
  • Network accessline 46
    [`ViewCompositionStrategy.Default`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy#Default()),
  • Network accessline 46
    [`ViewCompositionStrategy.Default`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy#Default()),
  • Network accessline 47
    disposes the Composition when the underlying [`ComposeView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView) detaches from the window, unless it is part of a pooling container such as a
  • Network accessline 47
    disposes the Composition when the underlying [`ComposeView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView) detaches from the window, unless it is part of a pooling container such as a
  • Network accessline 48
    [`ComposeView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView)
  • Network accessline 48
    [`ComposeView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView)
  • Network accessline 54
    To change the `ViewCompositionStrategy`, call the [`setViewCompositionStrategy()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/AbstractComposeView#setViewCompositionStrategy(androidx.compose.ui.platform.ViewC
  • Network accessline 54
    To change the `ViewCompositionStrategy`, call the [`setViewCompositionStrategy()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/AbstractComposeView#setViewCompositionStrategy(androidx.compose.ui.platform.ViewC
  • Network accessline 60
    | `ViewCompositionStrategy` | Description and Interop Scenario | |---|---| | [`DisposeOnDetachedFromWindow`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindow) | 
  • Network accessline 60
    | `ViewCompositionStrategy` | Description and Interop Scenario | |---|---| | [`DisposeOnDetachedFromWindow`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindow) | 
  • Network accessline 61
    |---|---| | [`DisposeOnDetachedFromWindow`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindow) | The Composition will be disposed when the underlying `ComposeView
  • Network accessline 61
    |---|---| | [`DisposeOnDetachedFromWindow`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindow) | The Composition will be disposed when the underlying `ComposeView
  • Network accessline 62
    | [`DisposeOnDetachedFromWindow`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindow) | The Composition will be disposed when the underlying `ComposeView` is detac
  • Network accessline 62
    | [`DisposeOnDetachedFromWindow`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindow) | The Composition will be disposed when the underlying `ComposeView` is detac
  • Network accessline 63
    | [`DisposeOnDetachedFromWindowOrReleasedFromPool`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool) (**Default**) | Similar to `DisposeOnDeta
  • Network accessline 63
    | [`DisposeOnDetachedFromWindowOrReleasedFromPool`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool) (**Default**) | Similar to `DisposeOnDeta
  • Network accessline 64
    | [`DisposeOnLifecycleDestroyed`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnLifecycleDestroyed) | The Composition will be disposed when the provided [`Lifecycle`](https://de
  • Network accessline 64
    | [`DisposeOnLifecycleDestroyed`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnLifecycleDestroyed) | The Composition will be disposed when the provided [`Lifecycle`](https://de
  • Network accessline 65
    | [`DisposeOnViewTreeLifecycleDestroyed`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) | The Composition will be disposed when the `Lifecycle` owned
  • Network accessline 65
    | [`DisposeOnViewTreeLifecycleDestroyed`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) | The Composition will be disposed when the `Lifecycle` owned
  • Network accessline 72
    If you want to incorporate Compose UI content in a fragment or an existing View layout, use [`ComposeView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView)
  • Network accessline 72
    If you want to incorporate Compose UI content in a fragment or an existing View layout, use [`ComposeView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView)
  • Network accessline 73
    layout, use [`ComposeView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView)
  • Network accessline 73
    layout, use [`ComposeView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView)
  • Network accessline 74
    and call its [`setContent()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView#setContent(kotlin.Function0)) method. `ComposeView` is an Android [`View`](https://developer.android.com/reference/android
  • Network accessline 74
    and call its [`setContent()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView#setContent(kotlin.Function0)) method. `ComposeView` is an Android [`View`](https://developer.android.com/reference/android
  • Network accessline 75
    [`setContent()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView#setContent(kotlin.Function0))
  • Network accessline 75
    [`setContent()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/ComposeView#setContent(kotlin.Function0))
  • Network accessline 76
    method. `ComposeView` is an Android [`View`](https://developer.android.com/reference/android/view/View).
  • Network accessline 76
    method. `ComposeView` is an Android [`View`](https://developer.android.com/reference/android/view/View).
  • Network accessline 81
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 81
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 98
    In the Kotlin source code, inflate the layout from the [layout resource](https://developer.android.com/guide/topics/resources/layout-resource) defined in XML. Then get the
  • Network accessline 98
    In the Kotlin source code, inflate the layout from the [layout resource](https://developer.android.com/guide/topics/resources/layout-resource) defined in XML. Then get the
  • Network accessline 99
    resource](https://developer.android.com/guide/topics/resources/layout-resource) defined in XML. Then get the
  • Network accessline 99
    resource](https://developer.android.com/guide/topics/resources/layout-resource) defined in XML. Then get the
  • Network accessline 174
    ![Two slightly different text elements, one above the other](https://developer.android.com/static/develop/ui/compose/images/interop-hellos.png)
  • Network accessline 174
    ![Two slightly different text elements, one above the other](https://developer.android.com/static/develop/ui/compose/images/interop-hellos.png)
  • Network accessline 284
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 284
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 285
    xmlns:tools="http://schemas.android.com/tools"
  • Network accessline 285
    xmlns:tools="http://schemas.android.com/tools"
  • Network accessline 299
    ![Composable displayed within layout editor](https://developer.android.com/static/develop/ui/compose/images/layout-editor-composable-preview.png)
  • Network accessline 299
    ![Composable displayed within layout editor](https://developer.android.com/static/develop/ui/compose/images/layout-editor-composable-preview.png)

jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/views-in-compose.md

  • Network accessline 2
    particularly useful if you want to use UI elements that are not yet available in Compose, like [`AdView`](https://developers.google.com/android/reference/com/google/android/gms/ads/AdView).
  • Network accessline 2
    particularly useful if you want to use UI elements that are not yet available in Compose, like [`AdView`](https://developers.google.com/android/reference/com/google/android/gms/ads/AdView).
  • Network accessline 3
    Compose, like [`AdView`](https://developers.google.com/android/reference/com/google/android/gms/ads/AdView). This approach also lets you reuse custom views you may have designed.
  • Network accessline 3
    Compose, like [`AdView`](https://developers.google.com/android/reference/com/google/android/gms/ads/AdView). This approach also lets you reuse custom views you may have designed.
  • Network accessline 4
    [`AdView`](https://developers.google.com/android/reference/com/google/android/gms/ads/AdView).
  • Network accessline 4
    [`AdView`](https://developers.google.com/android/reference/com/google/android/gms/ads/AdView).
  • Network accessline 12
    To include a view element or hierarchy, use the [`AndroidView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/AndroidView.composable#AndroidView(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1
  • Network accessline 12
    To include a view element or hierarchy, use the [`AndroidView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/AndroidView.composable#AndroidView(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1
  • Network accessline 13
    composable. `AndroidView` is passed a lambda that returns a [`View`](https://developer.android.com/reference/android/view/View). `AndroidView` also provides an `update` callback that is called when the view is inflated. The `AndroidView` re
  • Network accessline 13
    composable. `AndroidView` is passed a lambda that returns a [`View`](https://developer.android.com/reference/android/view/View). `AndroidView` also provides an `update` callback that is called when the view is inflated. The `AndroidView` re
  • Network accessline 14
    [`View`](https://developer.android.com/reference/android/view/View). `AndroidView` also provides an `update`
  • Network accessline 14
    [`View`](https://developer.android.com/reference/android/view/View). `AndroidView` also provides an `update`
  • Network accessline 66
    To embed an XML layout, use the [`AndroidViewBinding`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/package-summary#AndroidViewBinding(kotlin.Function3,%20androidx.compose.ui.Modifier,%20kotlin.Function1))
  • Network accessline 66
    To embed an XML layout, use the [`AndroidViewBinding`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/package-summary#AndroidViewBinding(kotlin.Function3,%20androidx.compose.ui.Modifier,%20kotlin.Function1))
  • Network accessline 67
    [`AndroidViewBinding`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/package-summary#AndroidViewBinding(kotlin.Function3,%20androidx.compose.ui.Modifier,%20kotlin.Function1))
  • Network accessline 67
    [`AndroidViewBinding`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/package-summary#AndroidViewBinding(kotlin.Function3,%20androidx.compose.ui.Modifier,%20kotlin.Function1))
  • Network accessline 69
    do this, your project must enable [view binding](https://developer.android.com/topic/libraries/view-binding#setup).
  • Network accessline 69
    do this, your project must enable [view binding](https://developer.android.com/topic/libraries/view-binding#setup).
  • Network accessline 88
    If you are using an `AndroidView` in a Lazy list (`LazyColumn`, `LazyRow`, `Pager`, etc.), consider using the [`AndroidView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/package-summary#AndroidView(kotlin.
  • Network accessline 88
    If you are using an `AndroidView` in a Lazy list (`LazyColumn`, `LazyRow`, `Pager`, etc.), consider using the [`AndroidView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/package-summary#AndroidView(kotlin.
  • Network accessline 89
    `Pager`, etc.), consider using the [`AndroidView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/package-summary#AndroidView(kotlin.Function1,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1,ko
  • Network accessline 89
    `Pager`, etc.), consider using the [`AndroidView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/viewinterop/package-summary#AndroidView(kotlin.Function1,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1,ko
  • Network accessline 133
    To include a fragment, use the [`AndroidFragment`](https://developer.android.com/reference/kotlin/androidx/fragment/compose/package-summary#AndroidFragment)
  • Network accessline 133
    To include a fragment, use the [`AndroidFragment`](https://developer.android.com/reference/kotlin/androidx/fragment/compose/package-summary#AndroidFragment)
  • Network accessline 157
    In Fragment [1.9.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.9.0) and higher, you can use the `maxLifecycle`
  • Network accessline 157
    In Fragment [1.9.0](https://developer.android.com/jetpack/androidx/releases/fragment#1.9.0) and higher, you can use the `maxLifecycle`
  • Network accessline 160
    For example, in a [`HorizontalPager`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/pager/HorizontalPager.composable), you can dynamically set `maxLifecycle`
  • Network accessline 160
    For example, in a [`HorizontalPager`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/pager/HorizontalPager.composable), you can dynamically set `maxLifecycle`
  • Network accessline 161
    to [`RESUMED`](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State#RESUMED) only when the corresponding page is active, keeping offscreen
  • Network accessline 161
    to [`RESUMED`](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State#RESUMED) only when the corresponding page is active, keeping offscreen
  • Network accessline 162
    pages capped at [`STARTED`](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State#STARTED). When the user navigates to another page, the
  • Network accessline 162
    pages capped at [`STARTED`](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State#STARTED). When the user navigates to another page, the
  • Network accessline 163
    previous page's fragment cap becomes `STARTED`. This pauses or cancels workloads scoped to `RESUMED` (such as coroutines running in [`repeatOnLifecycle(RESUMED)`](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-sum
  • Network accessline 163
    previous page's fragment cap becomes `STARTED`. This pauses or cancels workloads scoped to `RESUMED` (such as coroutines running in [`repeatOnLifecycle(RESUMED)`](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-sum
  • Network accessline 164
    scoped to `RESUMED` (such as coroutines running in [`repeatOnLifecycle(RESUMED)`](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#(androidx.lifecycle.LifecycleOwner).repeatOnLifecycle(androidx.lifecycle.Lif
  • Network accessline 164
    scoped to `RESUMED` (such as coroutines running in [`repeatOnLifecycle(RESUMED)`](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#(androidx.lifecycle.LifecycleOwner).repeatOnLifecycle(androidx.lifecycle.Lif
  • Network accessline 165
    [`repeatOnLifecycle(RESUMED)`](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#(androidx.lifecycle.LifecycleOwner).repeatOnLifecycle(androidx.lifecycle.Lifecycle.State,kotlin.coroutines.SuspendFunction1))),
  • Network accessline 165
    [`repeatOnLifecycle(RESUMED)`](https://developer.android.com/reference/kotlin/androidx/lifecycle/package-summary#(androidx.lifecycle.LifecycleOwner).repeatOnLifecycle(androidx.lifecycle.Lifecycle.State,kotlin.coroutines.SuspendFunction1))),
  • Network accessline 195
    To learn more about system resources, see [Resources in Compose](https://developer.android.com/develop/ui/compose/resources).
  • Network accessline 195
    To learn more about system resources, see [Resources in Compose](https://developer.android.com/develop/ui/compose/resources).
  • Network accessline 199
    [`CompositionLocal`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/CompositionLocal)
  • Network accessline 199
    [`CompositionLocal`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/CompositionLocal)
  • Network accessline 206
    Compose such as `Context`, `Configuration` or the `View` in which the Compose code is hosted with the corresponding [`LocalContext`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalContext())
  • Network accessline 206
    Compose such as `Context`, `Configuration` or the `View` in which the Compose code is hosted with the corresponding [`LocalContext`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalContext())
  • Network accessline 207
    code is hosted with the corresponding [`LocalContext`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalContext()), [`LocalConfiguration`](https://developer.android.com/reference/kotlin/androi
  • Network accessline 207
    code is hosted with the corresponding [`LocalContext`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalContext()), [`LocalConfiguration`](https://developer.android.com/reference/kotlin/androi
  • Network accessline 208
    [`LocalContext`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalContext()),
  • Network accessline 208
    [`LocalContext`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalContext()),
  • Network accessline 209
    [`LocalConfiguration`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalConfiguration()),
  • Network accessline 209
    [`LocalConfiguration`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalConfiguration()),
  • Network accessline 210
    or [`LocalView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalView()). Note that `CompositionLocal` classes are prefixed with `Local` for better
  • Network accessline 210
    or [`LocalView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalView()). Note that `CompositionLocal` classes are prefixed with `Local` for better
  • Network accessline 211
    [`LocalView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalView()).
  • Network accessline 211
    [`LocalView`](https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary#LocalView()).
  • Network accessline 236
    To showcase `CompositionLocal` and [side effects](https://developer.android.com/develop/ui/compose/side-effects), if a
  • Network accessline 236
    To showcase `CompositionLocal` and [side effects](https://developer.android.com/develop/ui/compose/side-effects), if a
  • Network accessline 237
    effects](https://developer.android.com/develop/ui/compose/side-effects), if a
  • Network accessline 237
    effects](https://developer.android.com/develop/ui/compose/side-effects), if a
  • Network accessline 238
    [`BroadcastReceiver`](https://developer.android.com/guide/components/broadcasts) needs to be registered from
  • Network accessline 238
    [`BroadcastReceiver`](https://developer.android.com/guide/components/broadcasts) needs to be registered from
  • Network accessline 290
    is to follow the general Compose guideline, *data flows down, events flow up* (discussed at more length in [Thinking in Compose](https://developer.android.com/develop/ui/compose/mental-model)). For example, this composable
  • Network accessline 290
    is to follow the general Compose guideline, *data flows down, events flow up* (discussed at more length in [Thinking in Compose](https://developer.android.com/develop/ui/compose/mental-model)). For example, this composable
  • Network accessline 291
    *data flows down, events flow up* (discussed at more length in [Thinking in Compose](https://developer.android.com/develop/ui/compose/mental-model)). For example, this composable launches a different activity:
  • Network accessline 291
    *data flows down, events flow up* (discussed at more length in [Thinking in Compose](https://developer.android.com/develop/ui/compose/mental-model)). For example, this composable launches a different activity:
  • Network accessline 292
    in Compose](https://developer.android.com/develop/ui/compose/mental-model)). For example, this composable
  • Network accessline 292
    in Compose](https://developer.android.com/develop/ui/compose/mental-model)). For example, this composable

jetpack-compose/migration/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/setup-compose-dependencies-and-compiler.md

  • Network accessline 4
    > [!NOTE] > **Note:** The Compose Compiler Gradle Plugin is only available from Kotlin 2.0+. For migration instructions, see ["Jetpack Compose compiler moving to the Kotlin > repository"](https://android-developers.googleblog.com/2024/04/je
  • Network accessline 4
    > [!NOTE] > **Note:** The Compose Compiler Gradle Plugin is only available from Kotlin 2.0+. For migration instructions, see ["Jetpack Compose compiler moving to the Kotlin > repository"](https://android-developers.googleblog.com/2024/04/je
  • Network accessline 6
    > repository"](https://android-developers.googleblog.com/2024/04/jetpack-compose-compiler-moving-to-kotlin-repository.html).
  • Network accessline 6
    > repository"](https://android-developers.googleblog.com/2024/04/jetpack-compose-compiler-moving-to-kotlin-repository.html).
  • Network accessline 73
    For the full list of available options, see the [documentation](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-compiler.html#compose-compiler-options-dsl).
  • Network accessline 73
    For the full list of available options, see the [documentation](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-compiler.html#compose-compiler-options-dsl).
  • Network accessline 79
    Set the `compose` flag to `true` inside the Android [`BuildFeatures`](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/BuildFeatures) to
  • Network accessline 79
    Set the `compose` flag to `true` inside the Android [`BuildFeatures`](https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/BuildFeatures) to
  • Network accessline 80
    enable [Compose functionality](https://developer.android.com/develop/ui/compose/tooling) in Android Studio.
  • Network accessline 80
    enable [Compose functionality](https://developer.android.com/develop/ui/compose/tooling) in Android Studio.
  • Network accessline 180
    > [!NOTE] > **Note:** Jetpack Compose is shipped using a Bill of Materials (BOM), to keep the versions of all library groups in sync. Read more about it in the [Bill of > Materials page](https://developer.android.com/develop/ui/compose/bom/
  • Network accessline 180
    > [!NOTE] > **Note:** Jetpack Compose is shipped using a Bill of Materials (BOM), to keep the versions of all library groups in sync. Read more about it in the [Bill of > Materials page](https://developer.android.com/develop/ui/compose/bom/
  • Network accessline 182
    > Materials page](https://developer.android.com/develop/ui/compose/bom/bom).
  • Network accessline 182
    > Materials page](https://developer.android.com/develop/ui/compose/bom/bom).
  • Network accessline 196
    To check which version of AGP is supported for different API levels, see the [Android Gradle plugin API level support](https://developer.android.com/build/releases/about-agp#api-level-support) documentation.
  • Network accessline 196
    To check which version of AGP is supported for different API levels, see the [Android Gradle plugin API level support](https://developer.android.com/build/releases/about-agp#api-level-support) documentation.
  • Network accessline 197
    [Android Gradle plugin API level support](https://developer.android.com/build/releases/about-agp#api-level-support) documentation.
  • Network accessline 197
    [Android Gradle plugin API level support](https://developer.android.com/build/releases/about-agp#api-level-support) documentation.

media/media3-cast-integration/SKILL.md

  • Network accessline 36
    - Legacy [Google Cast SDK](https://developers.google.com/cast) is in maintenance mode.
  • Network accessline 36
    - Legacy [Google Cast SDK](https://developers.google.com/cast) is in maintenance mode.
  • Network accessline 155
    - See the "Add a MediaRouteButton Composable to the Player" section in [Getting started with CastPlayer](references/android/media/media3/cast/create-castplayer.md) for Compose integration guidelines. - Use the [`MediaRouteButton` composable
  • Network accessline 155
    - See the "Add a MediaRouteButton Composable to the Player" section in [Getting started with CastPlayer](references/android/media/media3/cast/create-castplayer.md) for Compose integration guidelines. - Use the [`MediaRouteButton` composable
  • Network accessline 156
    - Use the [`MediaRouteButton` composable](https://developer.android.com/reference/kotlin/androidx/media3/cast/MediaRouteButton.composable) from `androidx.media3.cast` package.
  • Network accessline 156
    - Use the [`MediaRouteButton` composable](https://developer.android.com/reference/kotlin/androidx/media3/cast/MediaRouteButton.composable) from `androidx.media3.cast` package.
  • Network accessline 158
    - Place `MediaRouteButton` in an area next to playback controls. Don't hide it behind system UI. - Don't use `PlayerSurface` for custom player UI. Use the Material3 [`Player`   composable](https://developer.android.com/reference/kotlin/andr
  • Network accessline 158
    - Place `MediaRouteButton` in an area next to playback controls. Don't hide it behind system UI. - Don't use `PlayerSurface` for custom player UI. Use the Material3 [`Player`   composable](https://developer.android.com/reference/kotlin/andr
  • Network accessline 159
    - Don't use `PlayerSurface` for custom player UI. Use the Material3 [`Player`   composable](https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/Player.composable). - Force recomposition on playback location s
  • Network accessline 159
    - Don't use `PlayerSurface` for custom player UI. Use the Material3 [`Player`   composable](https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/Player.composable). - Force recomposition on playback location s
  • Network accessline 160
    composable](https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/Player.composable).
  • Network accessline 160
    composable](https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/Player.composable).
  • Network accessline 218
    - Don't use `AndroidView` to wrap the legacy `PlayerView`.   - Implement Material3 [`Player` composable](https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/Player.composable) and [`MediaRouteButton` composab
  • Network accessline 218
    - Don't use `AndroidView` to wrap the legacy `PlayerView`.   - Implement Material3 [`Player` composable](https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/Player.composable) and [`MediaRouteButton` composab
  • Network accessline 219
    - Implement Material3 [`Player` composable](https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/Player.composable) and [`MediaRouteButton` composable](https://developer.android.com/reference/kotlin/androidx/m
  • Network accessline 219
    - Implement Material3 [`Player` composable](https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/material3/Player.composable) and [`MediaRouteButton` composable](https://developer.android.com/reference/kotlin/androidx/m

media/media3-cast-integration/references/android/media/media3/cast/create-castplayer.md

  • Network accessline 1
    The [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) is a Jetpack Media3 [Player](https://developer.android.com/reference/kotlin/androidx/media3/common/Player) implementation that supports
  • Network accessline 1
    The [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) is a Jetpack Media3 [Player](https://developer.android.com/reference/kotlin/androidx/media3/common/Player) implementation that supports
  • Network accessline 2
    both local playback and casting to a remote Cast-enabled device. [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer)
  • Network accessline 2
    both local playback and casting to a remote Cast-enabled device. [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer)
  • Network accessline 3
    simplifies adding cast functionality to your app and provides rich features to seamlessly switch between local and remote playback. This guide shows you how to integrate [`CastPlayer`](https://developer.android.com/reference/androidx/media3
  • Network accessline 3
    simplifies adding cast functionality to your app and provides rich features to seamlessly switch between local and remote playback. This guide shows you how to integrate [`CastPlayer`](https://developer.android.com/reference/androidx/media3
  • Network accessline 5
    integrate [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) into your media app.
  • Network accessline 5
    integrate [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) into your media app.
  • Network accessline 7
    To integrate Cast with other platforms, see the [Cast SDK](https://developers.google.com/cast/docs/developers).
  • Network accessline 7
    To integrate Cast with other platforms, see the [Cast SDK](https://developers.google.com/cast/docs/developers).
  • Network accessline 11
    To test `CastPlayer`, you need a [Cast-enabled device](https://store.google.com/gb/category/connected_home?hl=en-GB). Choices include Android
  • Network accessline 11
    To test `CastPlayer`, you need a [Cast-enabled device](https://store.google.com/gb/category/connected_home?hl=en-GB). Choices include Android
  • Network accessline 37
    To configure the [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer), update your `AndroidManifest.xml` file with an
  • Network accessline 37
    To configure the [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer), update your `AndroidManifest.xml` file with an
  • Network accessline 42
    The [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) requires an options provider to configure its behavior. For a
  • Network accessline 42
    The [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) requires an options provider to configure its behavior. For a
  • Network accessline 43
    basic setup, you can use the [`DefaultCastOptionsProvider`](https://developer.android.com/reference/androidx/media3/cast/DefaultCastOptionsProvider) by adding it to your
  • Network accessline 43
    basic setup, you can use the [`DefaultCastOptionsProvider`](https://developer.android.com/reference/androidx/media3/cast/DefaultCastOptionsProvider) by adding it to your
  • Network accessline 55
    To customize the configuration, implement your own custom `OptionsProvider`. See the [CastOptions](https://developer.android.com/media/media3/cast/customize-castoptions) guide to learn how.
  • Network accessline 55
    To customize the configuration, implement your own custom `OptionsProvider`. See the [CastOptions](https://developer.android.com/media/media3/cast/customize-castoptions) guide to learn how.
  • Network accessline 56
    the [CastOptions](https://developer.android.com/media/media3/cast/customize-castoptions) guide to learn how.
  • Network accessline 56
    the [CastOptions](https://developer.android.com/media/media3/cast/customize-castoptions) guide to learn how.
  • Network accessline 61
    discover Cast-enabled devices on the network and reroute media without opening the app activity. For example, a user can change the device playing your app's media from the [media notification](https://developer.android.com/media/implement/
  • Network accessline 61
    discover Cast-enabled devices on the network and reroute media without opening the app activity. For example, a user can change the device playing your app's media from the [media notification](https://developer.android.com/media/implement/
  • Network accessline 63
    media from the [media notification](https://developer.android.com/media/implement/surfaces/mobile).
  • Network accessline 63
    media from the [media notification](https://developer.android.com/media/implement/surfaces/mobile).
  • Network accessline 75
    the system media notification. For this reason, you should create your `ExoPlayer` (for local playback) and `CastPlayer` (for remote playback) instances in a service, such as [MediaSessionService](https://developer.android.com/media/media3/
  • Network accessline 75
    the system media notification. For this reason, you should create your `ExoPlayer` (for local playback) and `CastPlayer` (for remote playback) instances in a service, such as [MediaSessionService](https://developer.android.com/media/media3/
  • Network accessline 76
    `ExoPlayer` (for local playback) and `CastPlayer` (for remote playback) instances in a service, such as [MediaSessionService](https://developer.android.com/media/media3/session/background-playback#service-lifecycle) or [MediaLibraryService]
  • Network accessline 76
    `ExoPlayer` (for local playback) and `CastPlayer` (for remote playback) instances in a service, such as [MediaSessionService](https://developer.android.com/media/media3/session/background-playback#service-lifecycle) or [MediaLibraryService]
  • Network accessline 77
    instances in a service, such as [MediaSessionService](https://developer.android.com/media/media3/session/background-playback#service-lifecycle) or [MediaLibraryService](https://developer.android.com/guide/topics/media/session/medialibraryse
  • Network accessline 77
    instances in a service, such as [MediaSessionService](https://developer.android.com/media/media3/session/background-playback#service-lifecycle) or [MediaLibraryService](https://developer.android.com/guide/topics/media/session/medialibraryse
  • Network accessline 78
    First, create your `ExoPlayer` instance and then when building your [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) instance, set `ExoPlayer` as the local player instance. You can then switch media pl
  • Network accessline 78
    First, create your `ExoPlayer` instance and then when building your [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) instance, set `ExoPlayer` as the local player instance. You can then switch media pl
  • Network accessline 79
    [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) instance, set `ExoPlayer` as the local player instance. You can
  • Network accessline 79
    [`CastPlayer`](https://developer.android.com/reference/androidx/media3/cast/CastPlayer) instance, set `ExoPlayer` as the local player instance. You can
  • Network accessline 82
    Switcher** feature to handle player transfers when the output route changes from local to remote or from remote to local. ![Screenshot showing the Output Switcher UI in notifications.](https://developer.android.com/static/media/media3/cast/
  • Network accessline 82
    Switcher** feature to handle player transfers when the output route changes from local to remote or from remote to local. ![Screenshot showing the Output Switcher UI in notifications.](https://developer.android.com/static/media/media3/cast/
  • Network accessline 84
    ![Screenshot showing the Output Switcher UI in notifications.](https://developer.android.com/static/media/media3/cast/images/output_switcher.jpeg) Figure 1: (a) Device chip on Media notification (b) Cast-enabled devices shown on tapping the
  • Network accessline 84
    ![Screenshot showing the Output Switcher UI in notifications.](https://developer.android.com/static/media/media3/cast/images/output_switcher.jpeg) Figure 1: (a) Device chip on Media notification (b) Cast-enabled devices shown on tapping the
  • Network accessline 122
    Add a [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) to your app's UI. Tapping the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButt
  • Network accessline 122
    Add a [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) to your app's UI. Tapping the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButt
  • Network accessline 131
    There are four ways to add the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) to your activity's UI. The
  • Network accessline 131
    There are four ways to add the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) to your activity's UI. The
  • Network accessline 140
    ![Screenshot showing the MediaRouteButton in the UI.](https://developer.android.com/static/media/media3/cast/images/cast.jpeg) Figure 2: (a) MediaRouteButton in menu bar, (b) as a View, (c) in PlayerView, and (d) Dialog of Cast-enabled devi
  • Network accessline 140
    ![Screenshot showing the MediaRouteButton in the UI.](https://developer.android.com/static/media/media3/cast/images/cast.jpeg) Figure 2: (a) MediaRouteButton in menu bar, (b) as a View, (c) in PlayerView, and (d) Dialog of Cast-enabled devi
  • Network accessline 142
    > [!IMPORTANT] > **Important:** To use the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) in Views UI, the containing activity must be a subclass of `FragmentActivity`.
  • Network accessline 142
    > [!IMPORTANT] > **Important:** To use the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) in Views UI, the containing activity must be a subclass of `FragmentActivity`.
  • Network accessline 143
    > **Important:** To use the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) in Views UI, the containing activity must be a subclass of `FragmentActivity`.
  • Network accessline 143
    > **Important:** To use the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) in Views UI, the containing activity must be a subclass of `FragmentActivity`.
  • Network accessline 145
    > [!TIP] > **Tip:** These screenshots are from the [demo-session](https://github.com/androidx/media/tree/release/demos/session) apps in Media3. You can checkout the app to see an example of `CastPlayer` implementation.
  • Network accessline 145
    > [!TIP] > **Tip:** These screenshots are from the [demo-session](https://github.com/androidx/media/tree/release/demos/session) apps in Media3. You can checkout the app to see an example of `CastPlayer` implementation.
  • Network accessline 146
    > **Tip:** These screenshots are from the [demo-session](https://github.com/androidx/media/tree/release/demos/session) apps in Media3. You can checkout the app to see an example of `CastPlayer` implementation.
  • Network accessline 146
    > **Tip:** These screenshots are from the [demo-session](https://github.com/androidx/media/tree/release/demos/session) apps in Media3. You can checkout the app to see an example of `CastPlayer` implementation.
  • Network accessline 150
    You can add the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) Composable to your player's UI. For more
  • Network accessline 150
    You can add the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) Composable to your player's UI. For more
  • Network accessline 151
    information, see the [Compose](https://developer.android.com/media/media3/ui/compose) guide.
  • Network accessline 151
    information, see the [Compose](https://developer.android.com/media/media3/ui/compose) guide.
  • Network accessline 183
    You can add the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) directly within the [PlayerView](https://developer.android.com/guide/topics/media/ui/playerview)'s UI
  • Network accessline 183
    You can add the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) directly within the [PlayerView](https://developer.android.com/guide/topics/media/ui/playerview)'s UI
  • Network accessline 184
    controls. After setting the [MediaController](https://developer.android.com/guide/topics/media/session/mediacontroller) as the player for your
  • Network accessline 184
    controls. After setting the [MediaController](https://developer.android.com/guide/topics/media/session/mediacontroller) as the player for your
  • Network accessline 216
    To set up a [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) in the app bar menu, create an XML menu and
  • Network accessline 216
    To set up a [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) in the app bar menu, create an XML menu and
  • Network accessline 219
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 219
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 220
    xmlns:app="http://schemas.android.com/apk/res-auto">
  • Network accessline 220
    xmlns:app="http://schemas.android.com/apk/res-auto">
  • Network accessline 286
    You can set up a [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) in your activity layout.xml.
  • Network accessline 286
    You can set up a [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton) in your activity layout.xml.
  • Network accessline 294
    To complete the setup for the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton), use the Media3 Cast
  • Network accessline 294
    To complete the setup for the [`MediaRouteButton`](https://developer.android.com/reference/androidx/mediarouter/app/MediaRouteButton), use the Media3 Cast
  • Network accessline 389
    For more information about listening and responding to playback events, see the [player events](https://developer.android.com/media/media3/exoplayer/listening-to-player-events) guide.
  • Network accessline 389
    For more information about listening and responding to playback events, see the [player events](https://developer.android.com/media/media3/exoplayer/listening-to-player-events) guide.
  • Network accessline 390
    [player events](https://developer.android.com/media/media3/exoplayer/listening-to-player-events) guide.
  • Network accessline 390
    [player events](https://developer.android.com/media/media3/exoplayer/listening-to-player-events) guide.

media/media3-cast-integration/references/android/media/media3/cast/customize-castoptions.md

  • Network accessline 1
    To configure your app's Cast session, provide an [`OptionsProvider`](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/OptionsProvider). Use the
  • Network accessline 1
    To configure your app's Cast session, provide an [`OptionsProvider`](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/OptionsProvider). Use the
  • Network accessline 2
    [`CastOptions`](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastOptions) object built by the provider to set the receiver application ID,
  • Network accessline 2
    [`CastOptions`](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastOptions) object built by the provider to set the receiver application ID,
  • Network accessline 43
    For more information, see [CastOptions.Builder](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastOptions.Builder).
  • Network accessline 43
    For more information, see [CastOptions.Builder](https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastOptions.Builder).

media/media3-cast-integration/references/android/media/media3/cast/index.md

  • Network accessline 1
    The Media3 [`cast`](https://developer.android.com/reference/androidx/media3/cast/package-summary) module extends your media playback experience to
  • Network accessline 1
    The Media3 [`cast`](https://developer.android.com/reference/androidx/media3/cast/package-summary) module extends your media playback experience to
  • Network accessline 2
    Cast devices. It lets your app cast content to [compatible devices](https://developer.android.com/media/media3/cast/create-castplayer#get-device),
  • Network accessline 2
    Cast devices. It lets your app cast content to [compatible devices](https://developer.android.com/media/media3/cast/create-castplayer#get-device),
  • Network accessline 3
    such as TVs and speakers. The [sender](https://developers.google.com/cast/glossary#sender) app acts as a remote controller for media
  • Network accessline 3
    such as TVs and speakers. The [sender](https://developers.google.com/cast/glossary#sender) app acts as a remote controller for media
  • Network accessline 4
    playback on the [receiver](https://developers.google.com/cast/glossary#receiver) device. This module integrates with the [Jetpack
  • Network accessline 4
    playback on the [receiver](https://developers.google.com/cast/glossary#receiver) device. This module integrates with the [Jetpack
  • Network accessline 5
    Media3](https://developer.android.com/guide/topics/media/media3) library, so you can use the same `Player` interface and UI
  • Network accessline 5
    Media3](https://developer.android.com/guide/topics/media/media3) library, so you can use the same `Player` interface and UI
  • Network accessline 14
    [Go to Media3 CastPlayer](https://developer.android.com/media/media3/cast/create-castplayer)
  • Network accessline 14
    [Go to Media3 CastPlayer](https://developer.android.com/media/media3/cast/create-castplayer)
  • Network accessline 21
    [Explore Cast SDK](https://developers.google.com/cast/docs/developers)
  • Network accessline 21
    [Explore Cast SDK](https://developers.google.com/cast/docs/developers)

navigation/navigation-3/references/android/guide/navigation/navigation-3/index.md

  • Network accessline 3
    [View on GitHub](https://github.com/android/skills/tree/main/navigation/navigation-3)
  • Network accessline 3
    [View on GitHub](https://github.com/android/skills/tree/main/navigation/navigation-3)
  • Network accessline 7
    Use an Android skill to help you build using Jetpack Navigation 3. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 7
    Use an Android skill to help you build using Jetpack Navigation 3. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 18
    - Conventions for modeling a back stack, where each entry on the back stack represents content that the user has navigated to - A UI that automatically updates with back stack changes (including [animations](https://developer.android.com/gu
  • Network accessline 18
    - Conventions for modeling a back stack, where each entry on the back stack represents content that the user has navigated to - A UI that automatically updates with back stack changes (including [animations](https://developer.android.com/gu
  • Network accessline 19
    - A UI that automatically updates with back stack changes (including [animations](https://developer.android.com/guide/navigation/navigation-3/animate-destinations))
  • Network accessline 19
    - A UI that automatically updates with back stack changes (including [animations](https://developer.android.com/guide/navigation/navigation-3/animate-destinations))
  • Network accessline 20
    - A scope for items in the back stack, allowing state to be retained while an item is in the back stack - An adaptive layout system that allows multiple destinations to be displayed at the same time, enabling seamless switching between thos
  • Network accessline 20
    - A scope for items in the back stack, allowing state to be retained while an item is in the back stack - An adaptive layout system that allows multiple destinations to be displayed at the same time, enabling seamless switching between thos
  • Network accessline 21
    - An adaptive layout system that allows multiple destinations to be displayed at the same time, enabling seamless switching between those layouts - A mechanism for content to communicate with its parent layout ([metadata](https://developer.
  • Network accessline 21
    - An adaptive layout system that allows multiple destinations to be displayed at the same time, enabling seamless switching between those layouts - A mechanism for content to communicate with its parent layout ([metadata](https://developer.
  • Network accessline 22
    - A mechanism for content to communicate with its parent layout ([metadata](https://developer.android.com/guide/navigation/navigation-3/metadata))
  • Network accessline 22
    - A mechanism for content to communicate with its parent layout ([metadata](https://developer.android.com/guide/navigation/navigation-3/metadata))
  • Network accessline 23
    - Inter-destination communication to [return results](https://developer.android.com/guide/navigation/navigation-3/return-results) between screens
  • Network accessline 23
    - Inter-destination communication to [return results](https://developer.android.com/guide/navigation/navigation-3/return-results) between screens
  • Network accessline 27
    1. Define the content that users can navigate to in your app, each with a unique key, and add a function to resolve that key to the content. See [Resolve keys    to content](https://developer.android.com/guide/navigation/navigation-3/basics
  • Network accessline 27
    1. Define the content that users can navigate to in your app, each with a unique key, and add a function to resolve that key to the content. See [Resolve keys    to content](https://developer.android.com/guide/navigation/navigation-3/basics
  • Network accessline 28
    to content](https://developer.android.com/guide/navigation/navigation-3/basics#resolve-keys).
  • Network accessline 28
    to content](https://developer.android.com/guide/navigation/navigation-3/basics#resolve-keys).
  • Network accessline 29
    2. Create a back stack that keys are pushed onto and removed as users navigate your app. See [Create a back stack](https://developer.android.com/guide/navigation/navigation-3/basics#create-back).
  • Network accessline 29
    2. Create a back stack that keys are pushed onto and removed as users navigate your app. See [Create a back stack](https://developer.android.com/guide/navigation/navigation-3/basics#create-back).
  • Network accessline 30
    3. Use a [`NavDisplay`](https://developer.android.com/reference/kotlin/androidx/navigation3/ui/NavDisplay.composable) to display your app's back stack. Whenever the back stack changes, it updates the UI to display relevant content. See [Dis
  • Network accessline 30
    3. Use a [`NavDisplay`](https://developer.android.com/reference/kotlin/androidx/navigation3/ui/NavDisplay.composable) to display your app's back stack. Whenever the back stack changes, it updates the UI to display relevant content. See [Dis
  • Network accessline 31
    the back stack](https://developer.android.com/guide/navigation/navigation-3/basics#display-back).
  • Network accessline 31
    the back stack](https://developer.android.com/guide/navigation/navigation-3/basics#display-back).
  • Network accessline 32
    4. Modify `NavDisplay`'s [scene strategies](https://developer.android.com/guide/navigation/navigation-3/custom-layouts) as needed to support adaptive layouts and different platforms.
  • Network accessline 32
    4. Modify `NavDisplay`'s [scene strategies](https://developer.android.com/guide/navigation/navigation-3/custom-layouts) as needed to support adaptive layouts and different platforms.
  • Network accessline 33
    5. [Support deep links](https://developer.android.com/guide/navigation/navigation-3/deep-links) to navigate directly to destinations.
  • Network accessline 33
    5. [Support deep links](https://developer.android.com/guide/navigation/navigation-3/deep-links) to navigate directly to destinations.
  • Network accessline 35
    You can see the [full source code](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:navigation3/) for Navigation 3 on AOSP.
  • Network accessline 35
    You can see the [full source code](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:navigation3/) for Navigation 3 on AOSP.
  • Network accessline 46
    Read more about Navigation 3's principles and API design choices in the [announcement blog post](https://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html).
  • Network accessline 46
    Read more about Navigation 3's principles and API design choices in the [announcement blog post](https://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html).
  • Network accessline 47
    [announcement blog post](https://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html).
  • Network accessline 47
    [announcement blog post](https://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html).
  • Network accessline 51
    The [recipes repository](https://github.com/android/nav3-recipes) contains examples of how to use the
  • Network accessline 51
    The [recipes repository](https://github.com/android/nav3-recipes) contains examples of how to use the

navigation/navigation-3/references/android/guide/navigation/navigation-3/migration-guide.md

  • Network accessline 3
    [View on GitHub](https://github.com/android/skills/tree/main/navigation/navigation-3)
  • Network accessline 3
    [View on GitHub](https://github.com/android/skills/tree/main/navigation/navigation-3)
  • Network accessline 7
    Use an Android skill to help you build and migrate to Jetpack Navigation 3. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 7
    Use an Android skill to help you build and migrate to Jetpack Navigation 3. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 13
    To migrate your app from [Navigation 2](https://developer.android.com/guide/navigation) to Navigation 3, follow these steps:
  • Network accessline 13
    To migrate your app from [Navigation 2](https://developer.android.com/guide/navigation) to Navigation 3, follow these steps:
  • Network accessline 31
    - You must use a `compileSdk` of 36 or later. - You should be familiar with [navigation terminology](https://developer.android.com/guide/navigation).
  • Network accessline 31
    - You must use a `compileSdk` of 36 or later. - You should be familiar with [navigation terminology](https://developer.android.com/guide/navigation).
  • Network accessline 32
    - You should be familiar with [navigation terminology](https://developer.android.com/guide/navigation).
  • Network accessline 32
    - You should be familiar with [navigation terminology](https://developer.android.com/guide/navigation).
  • Network accessline 33
    - Destinations are composable functions. Navigation 3 is designed exclusively for Compose. To use Fragments and Views in Compose, see [Using Views in   Compose](https://developer.android.com/develop/ui/compose/migrate/interoperability-apis/
  • Network accessline 33
    - Destinations are composable functions. Navigation 3 is designed exclusively for Compose. To use Fragments and Views in Compose, see [Using Views in   Compose](https://developer.android.com/develop/ui/compose/migrate/interoperability-apis/
  • Network accessline 34
    Compose](https://developer.android.com/develop/ui/compose/migrate/interoperability-apis/views-in-compose).
  • Network accessline 34
    Compose](https://developer.android.com/develop/ui/compose/migrate/interoperability-apis/views-in-compose).
  • Network accessline 35
    - Routes are strongly typed. If you use string-based routes, [migrate to   type-safe routes](https://medium.com/androiddevelopers/type-safe-navigation-for-compose-105325a97657) first ([example](https://github.com/android/nowinandroid/pull/1
  • Network accessline 35
    - Routes are strongly typed. If you use string-based routes, [migrate to   type-safe routes](https://medium.com/androiddevelopers/type-safe-navigation-for-compose-105325a97657) first ([example](https://github.com/android/nowinandroid/pull/1
  • Network accessline 36
    type-safe routes](https://medium.com/androiddevelopers/type-safe-navigation-for-compose-105325a97657) first ([example](https://github.com/android/nowinandroid/pull/1413)).
  • Network accessline 36
    type-safe routes](https://medium.com/androiddevelopers/type-safe-navigation-for-compose-105325a97657) first ([example](https://github.com/android/nowinandroid/pull/1413)).
  • Network accessline 61
    The [code recipes repository](https://github.com/android/nav3-recipes) demonstrates more nuanced use
  • Network accessline 61
    The [code recipes repository](https://github.com/android/nav3-recipes) demonstrates more nuanced use
  • Network accessline 64
    - [Bottom sheets](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/bottomsheet) (instructions are provided in this guide)
  • Network accessline 64
    - [Bottom sheets](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/bottomsheet) (instructions are provided in this guide)
  • Network accessline 65
    - [Modularized navigation code and injected destinations](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/modular/hilt)
  • Network accessline 65
    - [Modularized navigation code and injected destinations](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/modular/hilt)
  • Network accessline 66
    - [Using and passing arguments to `ViewModel`](https://github.com/android/nav3-recipes?tab=readme-ov-file#passing-navigation-arguments-to-viewmodels)
  • Network accessline 66
    - [Using and passing arguments to `ViewModel`](https://github.com/android/nav3-recipes?tab=readme-ov-file#passing-navigation-arguments-to-viewmodels)
  • Network accessline 67
    - [Returning results from a screen](https://github.com/android/nav3-recipes?tab=readme-ov-file#returning-results)
  • Network accessline 67
    - [Returning results from a screen](https://github.com/android/nav3-recipes?tab=readme-ov-file#returning-results)
  • Network accessline 83
    - More than one level of nested navigation - Shared destinations: screens that can move between different back stacks - [Custom destination types](https://developer.android.com/guide/navigation/design/kotlin-dsl#custom)
  • Network accessline 83
    - More than one level of nested navigation - Shared destinations: screens that can move between different back stacks - [Custom destination types](https://developer.android.com/guide/navigation/design/kotlin-dsl#custom)
  • Network accessline 85
    - [Custom destination types](https://developer.android.com/guide/navigation/design/kotlin-dsl#custom)
  • Network accessline 85
    - [Custom destination types](https://developer.android.com/guide/navigation/design/kotlin-dsl#custom)
  • Network accessline 93
    Use the [Get started](https://developer.android.com/guide/navigation/navigation-3/get-started) page to add the Navigation 3 dependencies to your
  • Network accessline 93
    Use the [Get started](https://developer.android.com/guide/navigation/navigation-3/get-started) page to add the Navigation 3 dependencies to your
  • Network accessline 127
    Update every navigation [route](https://developer.android.com/guide/navigation#types) so that it implements the `NavKey`
  • Network accessline 127
    Update every navigation [route](https://developer.android.com/guide/navigation#types) so that it implements the `NavKey`
  • Network accessline 129
    navigation state](https://developer.android.com/guide/navigation/navigation-3/save-state).
  • Network accessline 129
    navigation state](https://developer.android.com/guide/navigation/navigation-3/save-state).
  • Network accessline 149
    > [!NOTE] > **Note:** The `@Serializable` annotation is provided by the KotlinX Serialization plugin. You can add this by following [these project setup steps](https://developer.android.com/guide/navigation/navigation-3/get-started#project-
  • Network accessline 149
    > [!NOTE] > **Note:** The `@Serializable` annotation is provided by the KotlinX Serialization plugin. You can add this by following [these project setup steps](https://developer.android.com/guide/navigation/navigation-3/get-started#project-
  • Network accessline 150
    > **Note:** The `@Serializable` annotation is provided by the KotlinX Serialization plugin. You can add this by following [these project setup steps](https://developer.android.com/guide/navigation/navigation-3/get-started#project-setup).
  • Network accessline 150
    > **Note:** The `@Serializable` annotation is provided by the KotlinX Serialization plugin. You can add this by following [these project setup steps](https://developer.android.com/guide/navigation/navigation-3/get-started#project-setup).
  • Network accessline 313
    > [!IMPORTANT] > **Architecture principles:** These classes follow the principles of [Unidirectional Data Flow](https://developer.android.com/topic/architecture):
  • Network accessline 313
    > [!IMPORTANT] > **Architecture principles:** These classes follow the principles of [Unidirectional Data Flow](https://developer.android.com/topic/architecture):
  • Network accessline 314
    > **Architecture principles:** These classes follow the principles of [Unidirectional Data Flow](https://developer.android.com/topic/architecture):
  • Network accessline 314
    > **Architecture principles:** These classes follow the principles of [Unidirectional Data Flow](https://developer.android.com/topic/architecture):
  • Network accessline 394
    In Navigation 3, `NavDisplay` provides an entry-scoped `LifecycleOwner` through `LocalLifecycleOwner.current` to each destination's composable content. See [Destination lifecycle](https://developer.android.com/guide/navigation/navigation-3/
  • Network accessline 394
    In Navigation 3, `NavDisplay` provides an entry-scoped `LifecycleOwner` through `LocalLifecycleOwner.current` to each destination's composable content. See [Destination lifecycle](https://developer.android.com/guide/navigation/navigation-3/
  • Network accessline 396
    content. See [Destination lifecycle](https://developer.android.com/guide/navigation/navigation-3/basics#destination-lifecycle) for more information.
  • Network accessline 396
    content. See [Destination lifecycle](https://developer.android.com/guide/navigation/navigation-3/basics#destination-lifecycle) for more information.
  • Network accessline 451
    In Navigation 3, add [`rememberResultEventBusNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/rememberResultEventBusNavEntryDecorator.composable) to
  • Network accessline 451
    In Navigation 3, add [`rememberResultEventBusNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/rememberResultEventBusNavEntryDecorator.composable) to
  • Network accessline 452
    [`rememberResultEventBusNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/rememberResultEventBusNavEntryDecorator.composable) to
  • Network accessline 452
    [`rememberResultEventBusNavEntryDecorator()`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/rememberResultEventBusNavEntryDecorator.composable) to
  • Network accessline 453
    your `NavDisplay.entryDecorators`. In your sender destination's `entryProvider` mapping, retrieve [`LocalResultEventBus.current`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/LocalResultEventBus) and ca
  • Network accessline 453
    your `NavDisplay.entryDecorators`. In your sender destination's `entryProvider` mapping, retrieve [`LocalResultEventBus.current`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/LocalResultEventBus) and ca
  • Network accessline 454
    mapping, retrieve [`LocalResultEventBus.current`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/LocalResultEventBus)
  • Network accessline 454
    mapping, retrieve [`LocalResultEventBus.current`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/LocalResultEventBus)
  • Network accessline 455
    and call `sendResult()`. In the receiving destination, use [`ResultEffect`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/ResultEffect.composable) to forward the event to a `ViewModel` or trigger a side 
  • Network accessline 455
    and call `sendResult()`. In the receiving destination, use [`ResultEffect`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/ResultEffect.composable) to forward the event to a `ViewModel` or trigger a side 
  • Network accessline 456
    [`ResultEffect`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/ResultEffect.composable) to forward the event to a `ViewModel` or
  • Network accessline 456
    [`ResultEffect`](https://developer.android.com/reference/kotlin/androidx/navigation3/runtime/result/ResultEffect.composable) to forward the event to a `ViewModel` or
  • Network accessline 491
    For state-based observation, you can call `resultBus.conflateAsState()`. For more details, see [Return results](https://developer.android.com/guide/navigation/navigation-3/return-results).
  • Network accessline 491
    For state-based observation, you can call `resultBus.conflateAsState()`. For more details, see [Return results](https://developer.android.com/guide/navigation/navigation-3/return-results).
  • Network accessline 492
    more details, see [Return results](https://developer.android.com/guide/navigation/navigation-3/return-results).
  • Network accessline 492
    more details, see [Return results](https://developer.android.com/guide/navigation/navigation-3/return-results).
  • Network accessline 496
    In Navigation 2, you [define your destinations](https://developer.android.com/guide/navigation/design#compose)
  • Network accessline 496
    In Navigation 2, you [define your destinations](https://developer.android.com/guide/navigation/design#compose)
  • Network accessline 497
    using the [NavGraphBuilder DSL](https://developer.android.com/guide/navigation/design/kotlin-dsl#navgraphbuilder),
  • Network accessline 497
    using the [NavGraphBuilder DSL](https://developer.android.com/guide/navigation/design/kotlin-dsl#navgraphbuilder),
  • Network accessline 499
    functions here as described in [Encapsulate your navigation code](https://developer.android.com/guide/navigation/design/encapsulate).
  • Network accessline 499
    functions here as described in [Encapsulate your navigation code](https://developer.android.com/guide/navigation/design/encapsulate).
  • Network accessline 501
    In Navigation 3, you define your destinations using an `entryProvider`. This `entryProvider` resolves a route to a [`NavEntry`](https://developer.android.com/guide/navigation/navigation-3/basics#resolve-keys). Importantly, the
  • Network accessline 501
    In Navigation 3, you define your destinations using an `entryProvider`. This `entryProvider` resolves a route to a [`NavEntry`](https://developer.android.com/guide/navigation/navigation-3/basics#resolve-keys). Importantly, the
  • Network accessline 502
    `entryProvider` resolves a route to a [`NavEntry`](https://developer.android.com/guide/navigation/navigation-3/basics#resolve-keys). Importantly, the
  • Network accessline 502
    `entryProvider` resolves a route to a [`NavEntry`](https://developer.android.com/guide/navigation/navigation-3/basics#resolve-keys). Importantly, the
  • Network accessline 516
    Create an `entryProvider` [using the DSL](https://developer.android.com/guide/navigation/navigation-3/basics#entry-provider-DSL) at the same scope as the
  • Network accessline 516
    Create an `entryProvider` [using the DSL](https://developer.android.com/guide/navigation/navigation-3/basics#entry-provider-DSL) at the same scope as the
  • Network accessline 534
    - `composable<T>`: Move it into `entryProvider` and rename it to `entry`, retaining the type parameter. For example, `composable<RouteA>` becomes `entry<RouteA>`. - `dialog<T>`: Do the same as `composable`, but add metadata to the entry as 
  • Network accessline 534
    - `composable<T>`: Move it into `entryProvider` and rename it to `entry`, retaining the type parameter. For example, `composable<RouteA>` becomes `entry<RouteA>`. - `dialog<T>`: Do the same as `composable`, but add metadata to the entry as 
  • Network accessline 536
    - [`bottomSheet`](https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/package-summary#(androidx.navigation.NavGraphBuilder).bottomSheet(kotlin.String,kotlin.collections.List,kotlin.collections.List,kotlin.Fun
  • Network accessline 536
    - [`bottomSheet`](https://developer.android.com/reference/kotlin/androidx/compose/material/navigation/package-summary#(androidx.navigation.NavGraphBuilder).bottomSheet(kotlin.String,kotlin.collections.List,kotlin.collections.List,kotlin.Fun
  • Network accessline 546
    You can refactor [`NavGraphBuilder` extension functions](https://developer.android.com/guide/navigation/design/encapsulate) to
  • Network accessline 546
    You can refactor [`NavGraphBuilder` extension functions](https://developer.android.com/guide/navigation/design/encapsulate) to
  • Network accessline 726
    In Navigation 3, define a [`DeepLinkSerializer`](https://developer.android.com/guide/navigation/navigation-3/deep-links/uri-matcher#deep-link-serializer) to deserialize custom or
  • Network accessline 726
    In Navigation 3, define a [`DeepLinkSerializer`](https://developer.android.com/guide/navigation/navigation-3/deep-links/uri-matcher#deep-link-serializer) to deserialize custom or
  • Network accessline 728
    [Custom serialization with DeepLinkSerializer](https://developer.android.com/guide/navigation/navigation-3/deep-links/uri-matcher#deep-link-serializer) for details.
  • Network accessline 728
    [Custom serialization with DeepLinkSerializer](https://developer.android.com/guide/navigation/navigation-3/deep-links/uri-matcher#deep-link-serializer) for details.
  • Network accessline 730
    For more advanced use cases, including synthetic back stacks and custom matchers, see the [Support deep links](https://developer.android.com/guide/navigation/navigation-3/deep-links) guide.
  • Network accessline 730
    For more advanced use cases, including synthetic back stacks and custom matchers, see the [Support deep links](https://developer.android.com/guide/navigation/navigation-3/deep-links) guide.
  • Network accessline 731
    matchers, see the [Support deep links](https://developer.android.com/guide/navigation/navigation-3/deep-links) guide.
  • Network accessline 731
    matchers, see the [Support deep links](https://developer.android.com/guide/navigation/navigation-3/deep-links) guide.
  • Network accessline 739
    Congratulations! Your project is now migrated to Navigation 3. If you or your AI agent has run into any problems using this guide, [file a bug here](https://issuetracker.google.com/issues/new?component=1750212&template=2102223&title=%5BMigr
  • Network accessline 739
    Congratulations! Your project is now migrated to Navigation 3. If you or your AI agent has run into any problems using this guide, [file a bug here](https://issuetracker.google.com/issues/new?component=1750212&template=2102223&title=%5BMigr
  • Network accessline 741
    here](https://issuetracker.google.com/issues/new?component=1750212&template=2102223&title=%5BMigration%5D).
  • Network accessline 741
    here](https://issuetracker.google.com/issues/new?component=1750212&template=2102223&title=%5BMigration%5D).

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/animations.md

  • Network accessline 11
    It is also possible to override these animations for a specific destination by providing a different `transitionSpec` and `popTransitionSpec` to the `entry` composable. In this recipe, `ScreenC` has a custom vertical slide animation. [![](h
  • Network accessline 11
    It is also possible to override these animations for a specific destination by providing a different `transitionSpec` and `popTransitionSpec` to the `entry` composable. In this recipe, `ScreenC` has a custom vertical slide animation. [![](h
  • Network accessline 12
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/animations)
  • Network accessline 12
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/animations)

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/basic.md

  • Network accessline 13
    To navigate from `RouteA` to `RouteB`, we simply add a `RouteB` instance to the back stack. The `id` is passed as an argument to the `RouteB` data class. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View th
  • Network accessline 13
    To navigate from `RouteA` to `RouteB`, we simply add a `RouteB` instance to the back stack. The `id` is passed as an argument to the `RouteB` data class. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View th
  • Network accessline 14
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/basic)
  • Network accessline 14
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/basic)
  • Network accessline 22
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 22
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 23
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 23
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 24
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 24
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicdsl.md

  • Network accessline 13
    The navigation logic remains the same: to navigate from `RouteA` to `RouteB`, we add a `RouteB` instance to the back stack. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](http
  • Network accessline 13
    The navigation logic remains the same: to navigate from `RouteA` to `RouteB`, we add a `RouteB` instance to the back stack. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](http
  • Network accessline 14
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/basicdsl)
  • Network accessline 14
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/basicdsl)
  • Network accessline 22
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 22
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 23
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 23
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 24
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 24
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicsaveable.md

  • Network accessline 11
    This example uses a `when` statement within the `entryProvider` to map routes to their corresponding composables, but it could also be used with the `entryProvider` DSL. [![](https://developer.android.com/static/images/picto-icons/code.svg)
  • Network accessline 11
    This example uses a `when` statement within the `entryProvider` to map routes to their corresponding composables, but it could also be used with the `entryProvider` DSL. [![](https://developer.android.com/static/images/picto-icons/code.svg)
  • Network accessline 12
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/basicsaveable)
  • Network accessline 12
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/basicsaveable)
  • Network accessline 20
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 20
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 21
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 21
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 22
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 22
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/bottomsheet.md

  • Network accessline 17
    For more information, see the official documentation on [custom layouts](https://developer.android.com/guide/navigation/navigation-3/custom-layouts).
  • Network accessline 17
    For more information, see the official documentation on [custom layouts](https://developer.android.com/guide/navigation/navigation-3/custom-layouts).
  • Network accessline 18
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/bottomsheet)
  • Network accessline 18
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/bottomsheet)
  • Network accessline 26
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 26
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 27
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 27
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 28
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 28
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/common-ui.md

  • Network accessline 30
    **Note** : In this example, the `Home` route can move above the `ChatList` and `Camera` routes, meaning navigating back from `Home` doesn't necessarily leave the app. The app will exit when the user goes back from a single remaining top lev
  • Network accessline 30
    **Note** : In this example, the `Home` route can move above the `ChatList` and `Camera` routes, meaning navigating back from `Home` doesn't necessarily leave the app. The app will exit when the user goes back from a single remaining top lev
  • Network accessline 31
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/commonui)
  • Network accessline 31
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/commonui)
  • Network accessline 39
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 39
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 40
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 40
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 41
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 41
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional-transitions.md

  • Network accessline 16
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/conditionaltransitions)
  • Network accessline 16
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/conditionaltransitions)

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional.md

  • Network accessline 21
    This approach provides a clean way to handle conditional navigation by centralizing the logic in a custom back stack implementation. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitH
  • Network accessline 21
    This approach provides a clean way to handle conditional navigation by centralizing the logic in a custom back stack implementation. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitH
  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/conditional)
  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/conditional)
  • Network accessline 30
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 30
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 31
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 31
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 32
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 32
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 169
    // An overload of `rememberNavBackStack` that returns a subtype of `NavKey`. // See https://issuetracker.google.com/issues/463382671 for a discussion of this function
  • Network accessline 169
    // An overload of `rememberNavBackStack` that returns a subtype of `NavKey`. // See https://issuetracker.google.com/issues/463382671 for a discussion of this function
  • Network accessline 170
    // See https://issuetracker.google.com/issues/463382671 for a discussion of this function
  • Network accessline 170
    // See https://issuetracker.google.com/issues/463382671 for a discussion of this function
  • Network accessline 187
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 187
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 188
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 188
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 189
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 189
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-custommatcher.md

  • Network accessline 20
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/deeplink/usecases/matcher)
  • Network accessline 20
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/deeplink/usecases/matcher)

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-staticuri.md

  • Network accessline 18
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/deeplink/handlerequests/staticuri)
  • Network accessline 18
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/deeplink/handlerequests/staticuri)

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-syntheticbackstack.md

  • Network accessline 11
    "App A" is simulated by the module [syntheticbackstack](https://developer.android.com/app/src/main/java/com/example/nav3recipes/deeplink/handlerequests/syntheticbackstack), which
  • Network accessline 11
    "App A" is simulated by the module [syntheticbackstack](https://developer.android.com/app/src/main/java/com/example/nav3recipes/deeplink/handlerequests/syntheticbackstack), which
  • Network accessline 15
    "App B" is simulated by the module [syntheticbackstackapp](https://developer.android.com/syntheticbackstackapp/src/main/java/com/example/nav3recipes/deeplink/syntheticbackstack), which contains
  • Network accessline 15
    "App B" is simulated by the module [syntheticbackstackapp](https://developer.android.com/syntheticbackstackapp/src/main/java/com/example/nav3recipes/deeplink/syntheticbackstack), which contains
  • Network accessline 28
    The recipe follows the deep link guideline summarized [here](https://developer.android.com/docs/deeplink-guide#summary).
  • Network accessline 28
    The recipe follows the deep link guideline summarized [here](https://developer.android.com/docs/deeplink-guide#summary).
  • Network accessline 50
    The core helper functions for navigateUp and building synthetic backStack can be found [here](https://developer.android.com/syntheticbackstackapp/src/main/java/com/example/nav3recipes/deeplink/syntheticbackstack/util)
  • Network accessline 50
    The core helper functions for navigateUp and building synthetic backStack can be found [here](https://developer.android.com/syntheticbackstackapp/src/main/java/com/example/nav3recipes/deeplink/syntheticbackstack/util)
  • Network accessline 51
    found [here](https://developer.android.com/syntheticbackstackapp/src/main/java/com/example/nav3recipes/deeplink/syntheticbackstack/util)
  • Network accessline 51
    found [here](https://developer.android.com/syntheticbackstackapp/src/main/java/com/example/nav3recipes/deeplink/syntheticbackstack/util)
  • Network accessline 55
    Check out the [deep link guide](https://developer.android.com/docs/deeplink-guide) for a
  • Network accessline 55
    Check out the [deep link guide](https://developer.android.com/docs/deeplink-guide) for a
  • Network accessline 57
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/deeplink/handlerequests/syntheticbac
  • Network accessline 57
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/deeplink/handlerequests/syntheticbac
  • Network accessline 80
    internal const val ADVANCED_PATH_BASE = "https://www.nav3deeplink.com"
  • Network accessline 80
    internal const val ADVANCED_PATH_BASE = "https://www.nav3deeplink.com"

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-uriarguments.md

  • Network accessline 40
    See `MainActivity.deepLinkMatchers` for the actual url pattern of each. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/sr
  • Network accessline 40
    See `MainActivity.deepLinkMatchers` for the actual url pattern of each. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/sr
  • Network accessline 41
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/deeplink/handlerequests/uriarguments
  • Network accessline 41
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/deeplink/handlerequests/uriarguments
  • Network accessline 114
    /** STEP 1. Declare supported deep links */     internal val deepLinkMatchers: List<UriDeepLinkMatcher<NavKey>> = listOf(         // "https://www.nav3recipes.com/home"
  • Network accessline 114
    /** STEP 1. Declare supported deep links */     internal val deepLinkMatchers: List<UriDeepLinkMatcher<NavKey>> = listOf(         // "https://www.nav3recipes.com/home"
  • Network accessline 115
    internal val deepLinkMatchers: List<UriDeepLinkMatcher<NavKey>> = listOf(         // "https://www.nav3recipes.com/home"         UriDeepLinkMatcher(URL_HOME_EXACT.toUri(), serializer<HomeKey>()),
  • Network accessline 115
    internal val deepLinkMatchers: List<UriDeepLinkMatcher<NavKey>> = listOf(         // "https://www.nav3recipes.com/home"         UriDeepLinkMatcher(URL_HOME_EXACT.toUri(), serializer<HomeKey>()),
  • Network accessline 116
    // "https://www.nav3recipes.com/home"
  • Network accessline 116
    // "https://www.nav3recipes.com/home"
  • Network accessline 117
    UriDeepLinkMatcher(URL_HOME_EXACT.toUri(), serializer<HomeKey>()),         // "https://www.nav3recipes.com/users/with/{filter}"         UriDeepLinkMatcher(URL_USERS_WITH_FILTER.toUri(), serializer<UsersKey>()),
  • Network accessline 117
    UriDeepLinkMatcher(URL_HOME_EXACT.toUri(), serializer<HomeKey>()),         // "https://www.nav3recipes.com/users/with/{filter}"         UriDeepLinkMatcher(URL_USERS_WITH_FILTER.toUri(), serializer<UsersKey>()),
  • Network accessline 118
    // "https://www.nav3recipes.com/users/with/{filter}"
  • Network accessline 118
    // "https://www.nav3recipes.com/users/with/{filter}"
  • Network accessline 119
    UriDeepLinkMatcher(URL_USERS_WITH_FILTER.toUri(), serializer<UsersKey>()),         // "https://www.nav3recipes.com/users/search?{firstName}&{age}&{location}"         UriDeepLinkMatcher(URL_SEARCH.toUri(), serializer<SearchKey>()),
  • Network accessline 119
    UriDeepLinkMatcher(URL_USERS_WITH_FILTER.toUri(), serializer<UsersKey>()),         // "https://www.nav3recipes.com/users/search?{firstName}&{age}&{location}"         UriDeepLinkMatcher(URL_SEARCH.toUri(), serializer<SearchKey>()),
  • Network accessline 120
    // "https://www.nav3recipes.com/users/search?{firstName}&{age}&{location}"
  • Network accessline 120
    // "https://www.nav3recipes.com/users/search?{firstName}&{age}&{location}"
  • Network accessline 377
    internal const val STRING_LITERAL_SEARCH = "search" internal const val STRING_LITERAL_INCLUDE = "include" internal const val PATH_BASE = "https://www.nav3recipes.com"
  • Network accessline 377
    internal const val STRING_LITERAL_SEARCH = "search" internal const val STRING_LITERAL_INCLUDE = "include" internal const val PATH_BASE = "https://www.nav3recipes.com"
  • Network accessline 378
    internal const val STRING_LITERAL_INCLUDE = "include" internal const val PATH_BASE = "https://www.nav3recipes.com" internal const val PATH_INCLUDE = "$STRING_LITERAL_USERS/$STRING_LITERAL_INCLUDE"
  • Network accessline 378
    internal const val STRING_LITERAL_INCLUDE = "include" internal const val PATH_BASE = "https://www.nav3recipes.com" internal const val PATH_INCLUDE = "$STRING_LITERAL_USERS/$STRING_LITERAL_INCLUDE"
  • Network accessline 379
    internal const val PATH_BASE = "https://www.nav3recipes.com"
  • Network accessline 379
    internal const val PATH_BASE = "https://www.nav3recipes.com"

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/dialog.md

  • Network accessline 17
    For more information, see the official documentation on [custom layouts](https://developer.android.com/guide/navigation/navigation-3/custom-layouts).
  • Network accessline 17
    For more information, see the official documentation on [custom layouts](https://developer.android.com/guide/navigation/navigation-3/custom-layouts).
  • Network accessline 18
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/dialog)
  • Network accessline 18
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/dialog)
  • Network accessline 26
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 26
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 27
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 27
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 28
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 28
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/lifecycle-owner.md

  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/lifecycleowner)
  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/lifecycleowner)
  • Network accessline 30
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 30
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 31
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 31
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 32
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 32
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md

  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/material/listdetail)
  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/material/listdetail)
  • Network accessline 32
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 32
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 33
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 33
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 34
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 34
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.md

  • Network accessline 24
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/material/supportingpane)
  • Network accessline 24
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/material/supportingpane)
  • Network accessline 34
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 34
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 35
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 35
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 36
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 36
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-hilt.md

  • Network accessline 22
    This modular approach allows for a clean separation of concerns, making the codebase more scalable and maintainable. Each feature is responsible for its own navigation logic, and the `app` module only combines these pieces together. [![](ht
  • Network accessline 22
    This modular approach allows for a clean separation of concerns, making the codebase more scalable and maintainable. Each feature is responsible for its own navigation logic, and the `app` module only combines these pieces together. [![](ht
  • Network accessline 23
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/modular/hilt)
  • Network accessline 23
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/modular/hilt)
  • Network accessline 55
    const val PROFILE_URI = "https://www.nav3recipes.com/profile"
  • Network accessline 55
    const val PROFILE_URI = "https://www.nav3recipes.com/profile"
  • Network accessline 191
    const val CONVERSATION_URI = "https://www.nav3recipes.com/conversation"
  • Network accessline 191
    const val CONVERSATION_URI = "https://www.nav3recipes.com/conversation"

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-koin.md

  • Network accessline 3
    This recipe demonstrates how to structure a multi-module application using Navigation 3 and Koin for dependency injection. The goal is to create a decoupled architecture where navigation is defined and implemented in separate feature module
  • Network accessline 3
    This recipe demonstrates how to structure a multi-module application using Navigation 3 and Koin for dependency injection. The goal is to create a decoupled architecture where navigation is defined and implemented in separate feature module
  • Network accessline 18
    - **`api` module**: Defines the public API for the feature, including its navigation routes and deep link URI patterns. This allows other modules to navigate to this feature without needing to know about its implementation details.   - **`i
  • Network accessline 18
    - **`api` module**: Defines the public API for the feature, including its navigation routes and deep link URI patterns. This allows other modules to navigate to this feature without needing to know about its implementation details.   - **`i
  • Network accessline 19
    - **`impl` module** : Provides the implementation of the feature, including its composables and Koin `Module`. The Koin module uses the [`navigation`](https://insert-koin.io/docs/reference/koin-compose/navigation3/#declaring-navigation-entr
  • Network accessline 19
    - **`impl` module** : Provides the implementation of the feature, including its composables and Koin `Module`. The Koin module uses the [`navigation`](https://insert-koin.io/docs/reference/koin-compose/navigation3/#declaring-navigation-entr
  • Network accessline 21
    This modular approach allows for a clean separation of concerns, making the codebase more scalable and maintainable. Each feature is responsible for its own navigation logic, and the `app` module only combines these pieces together. [![](ht
  • Network accessline 21
    This modular approach allows for a clean separation of concerns, making the codebase more scalable and maintainable. Each feature is responsible for its own navigation logic, and the `app` module only combines these pieces together. [![](ht
  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/modular/koin)
  • Network accessline 22
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/modular/koin)
  • Network accessline 54
    const val PROFILE_URI = "https://www.nav3recipes.com/profile"
  • Network accessline 54
    const val PROFILE_URI = "https://www.nav3recipes.com/profile"
  • Network accessline 139
    const val CONVERSATION_URI = "https://www.nav3recipes.com/conversation"
  • Network accessline 139
    const val CONVERSATION_URI = "https://www.nav3recipes.com/conversation"

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md

  • Network accessline 23
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/multiplestacks)
  • Network accessline 23
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/multiplestacks)
  • Network accessline 31
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 31
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 32
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 32
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 33
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 33
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 89
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 89
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 90
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 90
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 91
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 91
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 218
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 218
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 219
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 219
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 220
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 220
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 346
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 346
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 347
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 347
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 348
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 348
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/passingarguments.md

  • Network accessline 13
    **Note** : The `rememberViewModelStoreNavEntryDecorator` is added to the `NavDisplay`'s `entryDecorators`. This ensures that `ViewModel`s are correctly scoped to their corresponding `NavEntry`, so that a new `ViewModel` instance is created 
  • Network accessline 13
    **Note** : The `rememberViewModelStoreNavEntryDecorator` is added to the `NavDisplay`'s `entryDecorators`. This ensures that `ViewModel`s are correctly scoped to their corresponding `NavEntry`, so that a new `ViewModel` instance is created 
  • Network accessline 14
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/passingarguments/viewmodels/hilt)
  • Network accessline 14
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/passingarguments/viewmodels/hilt)
  • Network accessline 22
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 22
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 23
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 23
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 24
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 24
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 147
    **Note** : The `rememberViewModelStoreNavEntryDecorator` is added to the `NavDisplay`'s `entryDecorators`. This ensures that `ViewModel`s are correctly scoped to their corresponding `NavEntry`, so that a new `ViewModel` instance is created 
  • Network accessline 147
    **Note** : The `rememberViewModelStoreNavEntryDecorator` is added to the `NavDisplay`'s `entryDecorators`. This ensures that `ViewModel`s are correctly scoped to their corresponding `NavEntry`, so that a new `ViewModel` instance is created 
  • Network accessline 148
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/passingarguments/viewmodels/basic)
  • Network accessline 148
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/passingarguments/viewmodels/basic)
  • Network accessline 156
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 156
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 157
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 157
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 158
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 158
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 272
    **Note** : The `rememberViewModelStoreNavEntryDecorator` is added to the `NavDisplay`'s `entryDecorators`. This ensures that `ViewModel`s are correctly scoped to their corresponding `NavEntry`, so that a new `ViewModel` instance is created 
  • Network accessline 272
    **Note** : The `rememberViewModelStoreNavEntryDecorator` is added to the `NavDisplay`'s `entryDecorators`. This ensures that `ViewModel`s are correctly scoped to their corresponding `NavEntry`, so that a new `ViewModel` instance is created 
  • Network accessline 273
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/passingarguments/viewmodels/koin)
  • Network accessline 273
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/passingarguments/viewmodels/koin)

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-event.md

  • Network accessline 14
    This approach is useful for results that are transient and should be handled as one-time events. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3
  • Network accessline 14
    This approach is useful for results that are transient and should be handled as one-time events. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3
  • Network accessline 15
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/results/event)
  • Network accessline 15
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/results/event)
  • Network accessline 23
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 23
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 24
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 24
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 25
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 25
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 52
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 52
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 53
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 53
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 54
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 54
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 81
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 81
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 82
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 82
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 83
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 83
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 106
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 106
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 107
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 107
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 108
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 108
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 191
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 191
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 192
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 192
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 193
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 193
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-state.md

  • Network accessline 14
    This approach is suitable when only the latest result is required. The result state does not survive configuration change or process death. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe 
  • Network accessline 14
    This approach is suitable when only the latest result is required. The result state does not survive configuration change or process death. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe 
  • Network accessline 15
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/results/state)
  • Network accessline 15
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/results/state)
  • Network accessline 23
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 23
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 24
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 24
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 25
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 25
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 52
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 52
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 53
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 53
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 54
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 54
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 81
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 81
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 82
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 82
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 83
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 83
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 106
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 106
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 107
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 107
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 108
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 108
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 191
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 191
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 192
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 192
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 193
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 193
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md

  • Network accessline 11
    The `ListDetailScene` provides a `CompositionLocal` named `LocalBackButtonVisibility` that can be used by the detail `NavEntry` to control whether it displays a back button. This is useful when the detail entry usually displays a back butto
  • Network accessline 11
    The `ListDetailScene` provides a `CompositionLocal` named `LocalBackButtonVisibility` that can be used by the detail `NavEntry` to control whether it displays a back button. This is useful when the detail entry usually displays a back butto
  • Network accessline 13
    See `ListDetailScene.kt` for more implementation details. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/co
  • Network accessline 13
    See `ListDetailScene.kt` for more implementation details. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/co
  • Network accessline 14
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/scenes/listdetail)
  • Network accessline 14
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/scenes/listdetail)
  • Network accessline 22
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 22
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 23
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 23
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 24
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 24
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 179
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 179
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 180
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 180
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 181
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 181
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 298
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 298
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 299
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 299
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 300
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 300
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.md

  • Network accessline 10
    See `TwoPaneScene.kt` for more implementation details. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/e
  • Network accessline 10
    See `TwoPaneScene.kt` for more implementation details. [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/e
  • Network accessline 11
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/scenes/twopane)
  • Network accessline 11
    [![](https://developer.android.com/static/images/picto-icons/code.svg) Explore View the full recipe on GitHub.](https://github.com/android/nav3-recipes/tree/main/app/src/main/java/com/example/nav3recipes/scenes/twopane)
  • Network accessline 134
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 134
    * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 135
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 135
    *  *     http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 136
    *     http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 136
    *     http://www.apache.org/licenses/LICENSE-2.0

navigation/navigation-event/references/android/guide/navigation/navigation-event/dispatcher.md

  • Network accessline 1
    To implement a robust navigation system, your app needs a centralized way to handle back gestures and other navigation signals. This page describes how to use [`NavigationEventDispatcher`](https://developer.android.com/reference/kotlin/andr
  • Network accessline 1
    To implement a robust navigation system, your app needs a centralized way to handle back gestures and other navigation signals. This page describes how to use [`NavigationEventDispatcher`](https://developer.android.com/reference/kotlin/andr
  • Network accessline 2
    handle back gestures and other navigation signals. This page describes how to use [`NavigationEventDispatcher`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher) to coordinate and distribute 
  • Network accessline 2
    handle back gestures and other navigation signals. This page describes how to use [`NavigationEventDispatcher`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher) to coordinate and distribute 
  • Network accessline 3
    use [`NavigationEventDispatcher`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher) to coordinate and distribute these
  • Network accessline 3
    use [`NavigationEventDispatcher`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher) to coordinate and distribute these
  • Network accessline 14
    You should provide `NavigationEventDispatcher` instances through a [`NavigationEventDispatcherOwner`](https://developer.android.com/reference/androidx/navigationevent/NavigationEventDispatcherOwner). This ensures that different parts of you
  • Network accessline 14
    You should provide `NavigationEventDispatcher` instances through a [`NavigationEventDispatcherOwner`](https://developer.android.com/reference/androidx/navigationevent/NavigationEventDispatcherOwner). This ensures that different parts of you
  • Network accessline 15
    [`NavigationEventDispatcherOwner`](https://developer.android.com/reference/androidx/navigationevent/NavigationEventDispatcherOwner). This ensures that different parts of your
  • Network accessline 15
    [`NavigationEventDispatcherOwner`](https://developer.android.com/reference/androidx/navigationevent/NavigationEventDispatcherOwner). This ensures that different parts of your
  • Network accessline 92
    > [!NOTE] > **Note:** To provide a simple input, use the [`DirectNavigationEventInput`](https://developer.android.com/reference/androidx/navigationevent/DirectNavigationEventInput) class.
  • Network accessline 92
    > [!NOTE] > **Note:** To provide a simple input, use the [`DirectNavigationEventInput`](https://developer.android.com/reference/androidx/navigationevent/DirectNavigationEventInput) class.
  • Network accessline 93
    > **Note:** To provide a simple input, use the [`DirectNavigationEventInput`](https://developer.android.com/reference/androidx/navigationevent/DirectNavigationEventInput) class.
  • Network accessline 93
    > **Note:** To provide a simple input, use the [`DirectNavigationEventInput`](https://developer.android.com/reference/androidx/navigationevent/DirectNavigationEventInput) class.

navigation/navigation-event/references/android/guide/navigation/navigation-event/handle-back.md

  • Network accessline 50
    Handlers are invoked based on priority, and then by recency. All [`PRIORITY_OVERLAY`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher#PRIORITY_OVERLAY()) handlers are called before any [`PRI
  • Network accessline 50
    Handlers are invoked based on priority, and then by recency. All [`PRIORITY_OVERLAY`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher#PRIORITY_OVERLAY()) handlers are called before any [`PRI
  • Network accessline 51
    [`PRIORITY_OVERLAY`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher#PRIORITY_OVERLAY()) handlers are called before any [`PRIORITY_DEFAULT`](https://developer.android.com/reference/kotlin/an
  • Network accessline 51
    [`PRIORITY_OVERLAY`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher#PRIORITY_OVERLAY()) handlers are called before any [`PRIORITY_DEFAULT`](https://developer.android.com/reference/kotlin/an
  • Network accessline 118
    This example shows how to observe predictive back gesture updates using [`NavigationEventTransitionState`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventTransitionState). The `progress` value can be 
  • Network accessline 118
    This example shows how to observe predictive back gesture updates using [`NavigationEventTransitionState`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventTransitionState). The `progress` value can be 
  • Network accessline 119
    [`NavigationEventTransitionState`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventTransitionState). The `progress` value can be used to
  • Network accessline 119
    [`NavigationEventTransitionState`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventTransitionState). The `progress` value can be used to
  • Network accessline 125
    > [!NOTE] > **Note:** For Android, if you're already using a navigation library with built-in Predictive Back support, like [Navigation 3](https://developer.android.com/guide/navigation/navigation-3/animate-destinations), use that instead o
  • Network accessline 125
    > [!NOTE] > **Note:** For Android, if you're already using a navigation library with built-in Predictive Back support, like [Navigation 3](https://developer.android.com/guide/navigation/navigation-3/animate-destinations), use that instead o
  • Network accessline 126
    > **Note:** For Android, if you're already using a navigation library with built-in Predictive Back support, like [Navigation 3](https://developer.android.com/guide/navigation/navigation-3/animate-destinations), use that instead of implemen
  • Network accessline 126
    > **Note:** For Android, if you're already using a navigation library with built-in Predictive Back support, like [Navigation 3](https://developer.android.com/guide/navigation/navigation-3/animate-destinations), use that instead of implemen

navigation/navigation-event/references/android/guide/navigation/navigation-event/index.md

  • Network accessline 2
    solution for integrating system-level navigation events into your application. It is designed to be the foundational layer for handling navigation directions across various [supported platforms](https://developer.android.com/kotlin/multipla
  • Network accessline 2
    solution for integrating system-level navigation events into your application. It is designed to be the foundational layer for handling navigation directions across various [supported platforms](https://developer.android.com/kotlin/multipla
  • Network accessline 4
    across various [supported platforms](https://developer.android.com/kotlin/multiplatform#kotlin-multiplatform-and-jetpack-libraries).
  • Network accessline 4
    across various [supported platforms](https://developer.android.com/kotlin/multiplatform#kotlin-multiplatform-and-jetpack-libraries).
  • Network accessline 14
    The [`NavigationEventDispatcher`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher) is the central class responsible for
  • Network accessline 14
    The [`NavigationEventDispatcher`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventDispatcher) is the central class responsible for
  • Network accessline 16
    ([`NavigationEventHandler`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventHandler)) and orchestrating the flow of events.
  • Network accessline 16
    ([`NavigationEventHandler`](https://developer.android.com/reference/kotlin/androidx/navigationevent/NavigationEventHandler)) and orchestrating the flow of events.
  • Network accessline 36
    [`NavigationEvent`](https://developer.android.com/reference/androidx/navigationevent/NavigationEvent) is a data class that carries the details of the
  • Network accessline 36
    [`NavigationEvent`](https://developer.android.com/reference/androidx/navigationevent/NavigationEvent) is a data class that carries the details of the
  • Network accessline 41
    [`NavigationEventInfo`](https://developer.android.com/reference/androidx/navigationevent/NavigationEventInfo) is an abstract class that provides contextual
  • Network accessline 41
    [`NavigationEventInfo`](https://developer.android.com/reference/androidx/navigationevent/NavigationEventInfo) is an abstract class that provides contextual
  • Network accessline 46
    [`NavigationEventInput`](https://developer.android.com/reference/androidx/navigationevent/NavigationEventInput) is an abstract class for components that generate
  • Network accessline 46
    [`NavigationEventInput`](https://developer.android.com/reference/androidx/navigationevent/NavigationEventInput) is an abstract class for components that generate

performance/anr-audit-and-fix/references/trace_analysis_guide.md

  • Network accessline 1
    Diagnose ANR traces using the following rules and format the output with [references/anr_trace_report_template.md](https://developer.android.com/agents/skills/performance/anr-audit-and-fix/references/anr_trace_report_template).
  • Network accessline 1
    Diagnose ANR traces using the following rules and format the output with [references/anr_trace_report_template.md](https://developer.android.com/agents/skills/performance/anr-audit-and-fix/references/anr_trace_report_template).
  • Network accessline 2
    [references/anr_trace_report_template.md](https://developer.android.com/agents/skills/performance/anr-audit-and-fix/references/anr_trace_report_template).
  • Network accessline 2
    [references/anr_trace_report_template.md](https://developer.android.com/agents/skills/performance/anr-audit-and-fix/references/anr_trace_report_template).

performance/r8-analyzer/references/FULL_BUILD_CONFIG_ANALYZER.md

  • Instruction override signalline 14
    This temporary change is the only file edit the skill makes. When running interactively, ask for user confirmation before modifying `settings.gradle` or `settings.gradle.kts` (skip confirmation when running non-interactively). If
  • Instruction override signalline 14
    This temporary change is the only file edit the skill makes. When running interactively, ask for user confirmation before modifying `settings.gradle` or `settings.gradle.kts` (skip confirmation when running non-interactively). If
  • Instruction override signalline 15
    interactively, ask for user confirmation before modifying `settings.gradle` or `settings.gradle.kts` (skip confirmation when running non-interactively). If the user declines, or asks you not to edit build or source files, don't edit
  • Instruction override signalline 15
    interactively, ask for user confirmation before modifying `settings.gradle` or `settings.gradle.kts` (skip confirmation when running non-interactively). If the user declines, or asks you not to edit build or source files, don't edit
  • Instruction override signalline 16
    `settings.gradle.kts` (skip confirmation when running non-interactively). If
  • Instruction override signalline 16
    `settings.gradle.kts` (skip confirmation when running non-interactively). If
  • Dangerous shell operationline 57
    rm -f tmp/r8analysis/keepruleradius.json tmp/r8analysis/analysis_result.txt
  • Dangerous shell operationline 57
    rm -f tmp/r8analysis/keepruleradius.json tmp/r8analysis/analysis_result.txt
  • Dangerous shell operationline 58
    find tmp/r8analysis -name '*.pb' -delete
  • Dangerous shell operationline 58
    find tmp/r8analysis -name '*.pb' -delete

performance/r8-analyzer/references/INSPECT-RULES.md

  • Network accessline 109
    1. Use `@SerializedName` on fields in your data classes that are used for serialization and deserialization. 2. Gson (**2.11.0 and higher** ) bundles its own rules ([View Gson's embedded    ProGuard rules](https://github.com/google/gson/blo
  • Network accessline 109
    1. Use `@SerializedName` on fields in your data classes that are used for serialization and deserialization. 2. Gson (**2.11.0 and higher** ) bundles its own rules ([View Gson's embedded    ProGuard rules](https://github.com/google/gson/blo
  • Network accessline 111
    ProGuard rules](https://github.com/google/gson/blob/main/gson/src/main/resources/META-INF/proguard/gson.pro)). The bundled keep rules retain the `@SerializedName` annotated fields. If you are on a version lower than 2.11, upgrade to Gson 2.
  • Network accessline 111
    ProGuard rules](https://github.com/google/gson/blob/main/gson/src/main/resources/META-INF/proguard/gson.pro)). The bundled keep rules retain the `@SerializedName` annotated fields. If you are on a version lower than 2.11, upgrade to Gson 2.
  • Network accessline 146
    **The fix** : Verify you are using Retrofit 2.10.0 and higher. Retrofit from 2.9.0 bundles rules that detect its own HTTP annotations (`@GET`, `@POST`) ([View Retrofit's embedded ProGuard rules](https://github.com/square/retrofit/blob/maste
  • Network accessline 146
    **The fix** : Verify you are using Retrofit 2.10.0 and higher. Retrofit from 2.9.0 bundles rules that detect its own HTTP annotations (`@GET`, `@POST`) ([View Retrofit's embedded ProGuard rules](https://github.com/square/retrofit/blob/maste
  • Network accessline 147
    2.9.0 bundles rules that detect its own HTTP annotations (`@GET`, `@POST`) ([View Retrofit's embedded ProGuard rules](https://github.com/square/retrofit/blob/master/retrofit/src/main/resources/META-INF/proguard/retrofit2.pro)), and from 2.1
  • Network accessline 147
    2.9.0 bundles rules that detect its own HTTP annotations (`@GET`, `@POST`) ([View Retrofit's embedded ProGuard rules](https://github.com/square/retrofit/blob/master/retrofit/src/main/resources/META-INF/proguard/retrofit2.pro)), and from 2.1
  • Network accessline 148
    ([View Retrofit's embedded ProGuard rules](https://github.com/square/retrofit/blob/master/retrofit/src/main/resources/META-INF/proguard/retrofit2.pro)), and from 2.10.0 it also keeps
  • Network accessline 148
    ([View Retrofit's embedded ProGuard rules](https://github.com/square/retrofit/blob/master/retrofit/src/main/resources/META-INF/proguard/retrofit2.pro)), and from 2.10.0 it also keeps
  • Network accessline 187
    **The fix** : Remove any broad `kotlinx` keep rules. Kotlin Coroutines (**1.7.0 and higher** ) bundles the necessary keep rules ([View Coroutines' embedded ProGuard rules](https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-cor
  • Network accessline 187
    **The fix** : Remove any broad `kotlinx` keep rules. Kotlin Coroutines (**1.7.0 and higher** ) bundles the necessary keep rules ([View Coroutines' embedded ProGuard rules](https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-cor
  • Network accessline 189
    ProGuard rules](https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/jvm/resources/META-INF/proguard/coroutines.pro)).
  • Network accessline 189
    ProGuard rules](https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/jvm/resources/META-INF/proguard/coroutines.pro)).

performance/r8-analyzer/references/android/topic/performance/app-optimization/enable-app-optimization.md

  • Network accessline 3
    [View on GitHub](https://github.com/android/skills/tree/main/performance/r8-analyzer)
  • Network accessline 3
    [View on GitHub](https://github.com/android/skills/tree/main/performance/r8-analyzer)
  • Network accessline 7
    Use the R8 Analyzer [Android skill](https://developer.android.com/tools/agents/android-skills) to analyze build files and identify redundant, broad, or subsumed [keep rules](https://developer.android.com/topic/performance/app-optimization/k
  • Network accessline 7
    Use the R8 Analyzer [Android skill](https://developer.android.com/tools/agents/android-skills) to analyze build files and identify redundant, broad, or subsumed [keep rules](https://developer.android.com/topic/performance/app-optimization/k
  • Network accessline 19
    - Reduced memory usage - Improved rendering and runtime performance - Fewer [ANRs](https://developer.android.com/topic/performance/anrs/keep-your-app-responsive)
  • Network accessline 19
    - Reduced memory usage - Improved rendering and runtime performance - Fewer [ANRs](https://developer.android.com/topic/performance/anrs/keep-your-app-responsive)
  • Network accessline 21
    - Fewer [ANRs](https://developer.android.com/topic/performance/anrs/keep-your-app-responsive)
  • Network accessline 21
    - Fewer [ANRs](https://developer.android.com/topic/performance/anrs/keep-your-app-responsive)
  • Network accessline 23
    > [!IMPORTANT] > **Important:** You should always enable optimization for your app's release build; however, you probably don't want to enable it for tests or libraries. For more information about using R8 with tests, see [Test and troubles
  • Network accessline 23
    > [!IMPORTANT] > **Important:** You should always enable optimization for your app's release build; however, you probably don't want to enable it for tests or libraries. For more information about using R8 with tests, see [Test and troubles
  • Network accessline 25
    > optimization](https://developer.android.com/topic/performance/app-optimization/test-and-troubleshoot-the-optimization). For more information about enabling R8 from libraries, see [Optimization for library authors](https://developer.androi
  • Network accessline 25
    > optimization](https://developer.android.com/topic/performance/app-optimization/test-and-troubleshoot-the-optimization). For more information about enabling R8 from libraries, see [Optimization for library authors](https://developer.androi
  • Network accessline 53
    Since 8.12.0 version of Android Gradle Plugin (AGP), R8 also optimizes resources as part of its optimization phases. For more information, see [Optimized resource shrinking](https://developer.android.com/topic/performance/app-optimization/e
  • Network accessline 53
    Since 8.12.0 version of Android Gradle Plugin (AGP), R8 also optimizes resources as part of its optimization phases. For more information, see [Optimized resource shrinking](https://developer.android.com/topic/performance/app-optimization/e
  • Network accessline 55
    resource shrinking](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization#optimize-resource-shrinking).
  • Network accessline 55
    resource shrinking](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization#optimize-resource-shrinking).
  • Network accessline 69
    - Set `enable = true` in the `optimization` block in your release build's app-level build script. - Add your [keep rules](https://developer.android.com/topic/performance/app-optimization/add-keep-rules) to a file with the suffix `.keep` in 
  • Network accessline 69
    - Set `enable = true` in the `optimization` block in your release build's app-level build script. - Add your [keep rules](https://developer.android.com/topic/performance/app-optimization/add-keep-rules) to a file with the suffix `.keep` in 
  • Network accessline 70
    - Add your [keep rules](https://developer.android.com/topic/performance/app-optimization/add-keep-rules) to a file with the suffix `.keep` in the `src/<variant>/keepRules` source set. For example, `src/main/keepRules/custom-rules.keep`.
  • Network accessline 70
    - Add your [keep rules](https://developer.android.com/topic/performance/app-optimization/add-keep-rules) to a file with the suffix `.keep` in the `src/<variant>/keepRules` source set. For example, `src/main/keepRules/custom-rules.keep`.
  • Network accessline 72
    > [!NOTE] > **Note:** The updated DSL enables both code and resource optimization. It also includes a set of default keep rules for the Android platform, equivalent to "proguard-android-optimize.txt". To omit the default rules, see [Omit de
  • Network accessline 72
    > [!NOTE] > **Note:** The updated DSL enables both code and resource optimization. It also includes a set of default keep rules for the Android platform, equivalent to "proguard-android-optimize.txt". To omit the default rules, see [Omit de
  • Network accessline 74
    > rules](https://developer.android.com/topic/performance/app-optimization/keep-rules-overview#omit-default).
  • Network accessline 74
    > rules](https://developer.android.com/topic/performance/app-optimization/keep-rules-overview#omit-default).
  • Network accessline 102
    To enable app optimization, set `isMinifyEnabled = true` (for code optimization) and `isShrinkResources = true` (for resource optimization) in your [release build's](https://developer.android.com/studio/publish/preparing#turn-off-debugging)
  • Network accessline 102
    To enable app optimization, set `isMinifyEnabled = true` (for code optimization) and `isShrinkResources = true` (for resource optimization) in your [release build's](https://developer.android.com/studio/publish/preparing#turn-off-debugging)
  • Network accessline 103
    and `isShrinkResources = true` (for resource optimization) in your [release build's](https://developer.android.com/studio/publish/preparing#turn-off-debugging) app-level build script. We recommend that you always enable both settings.
  • Network accessline 103
    and `isShrinkResources = true` (for resource optimization) in your [release build's](https://developer.android.com/studio/publish/preparing#turn-off-debugging) app-level build script. We recommend that you always enable both settings.
  • Network accessline 104
    build's](https://developer.android.com/studio/publish/preparing#turn-off-debugging) app-level build script. We recommend that you always enable both
  • Network accessline 104
    build's](https://developer.android.com/studio/publish/preparing#turn-off-debugging) app-level build script. We recommend that you always enable both
  • Network accessline 157
    - Enable R8 in [full mode](https://developer.android.com/topic/performance/app-optimization/full-mode)
  • Network accessline 157
    - Enable R8 in [full mode](https://developer.android.com/topic/performance/app-optimization/full-mode)
  • Network accessline 158
    - Enable [obfuscation, optimization, and shrinking](https://developer.android.com/topic/performance/app-optimization/adopt-optimizations-incrementally)
  • Network accessline 158
    - Enable [obfuscation, optimization, and shrinking](https://developer.android.com/topic/performance/app-optimization/adopt-optimizations-incrementally)
  • Network accessline 159
    - Enable resource shrinking and [optimized resource shrinking](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization#optimize-resource-shrinking)
  • Network accessline 159
    - Enable resource shrinking and [optimized resource shrinking](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization#optimize-resource-shrinking)
  • Network accessline 160
    - [Refine keep rules](https://developer.android.com/topic/performance/app-optimization/keep-rules-best-practices) to allow maximum optimization of classes, fields and methods.
  • Network accessline 160
    - [Refine keep rules](https://developer.android.com/topic/performance/app-optimization/keep-rules-best-practices) to allow maximum optimization of classes, fields and methods.
  • Network accessline 162
    To help you refine keep rules, use the [R8 Configuration Analyzer](https://developer.android.com/topic/performance/app-optimization/r8-configuration-analyzer).
  • Network accessline 162
    To help you refine keep rules, use the [R8 Configuration Analyzer](https://developer.android.com/topic/performance/app-optimization/r8-configuration-analyzer).
  • Network accessline 170
    The R8 Configuration Analyzer is available in AGP version 9.3.0-alpha05 or from R8 version 9.3.7-dev. For more information, see [Analyze R8 configuration](https://developer.android.com/topic/performance/app-optimization/r8-configuration-ana
  • Network accessline 170
    The R8 Configuration Analyzer is available in AGP version 9.3.0-alpha05 or from R8 version 9.3.7-dev. For more information, see [Analyze R8 configuration](https://developer.android.com/topic/performance/app-optimization/r8-configuration-ana
  • Network accessline 171
    R8 version 9.3.7-dev. For more information, see [Analyze R8 configuration](https://developer.android.com/topic/performance/app-optimization/r8-configuration-analyzer).
  • Network accessline 171
    R8 version 9.3.7-dev. For more information, see [Analyze R8 configuration](https://developer.android.com/topic/performance/app-optimization/r8-configuration-analyzer).
  • Network accessline 201
    To enable R8 to use its [full optimization capabilities](https://developer.android.com/topic/performance/app-optimization/full-mode), remove the
  • Network accessline 201
    To enable R8 to use its [full optimization capabilities](https://developer.android.com/topic/performance/app-optimization/full-mode), remove the
  • Network accessline 207
    especially if R8 renames class or method names. To get stack traces that correctly correspond to your source code, see [Recover the original stack trace](https://developer.android.com/topic/performance/app-optimization/test-and-troubleshoot
  • Network accessline 207
    especially if R8 renames class or method names. To get stack traces that correctly correspond to your source code, see [Recover the original stack trace](https://developer.android.com/topic/performance/app-optimization/test-and-troubleshoot
  • Network accessline 209
    trace](https://developer.android.com/topic/performance/app-optimization/test-and-troubleshoot-the-optimization#recover-original-stack-trace).
  • Network accessline 209
    trace](https://developer.android.com/topic/performance/app-optimization/test-and-troubleshoot-the-optimization#recover-original-stack-trace).
  • Network accessline 211
    If R8 is enabled, you should also [create Startup Profiles](https://developer.android.com/topic/performance/baselineprofiles/dex-layout-optimizations) for even better
  • Network accessline 211
    If R8 is enabled, you should also [create Startup Profiles](https://developer.android.com/topic/performance/baselineprofiles/dex-layout-optimizations) for even better
  • Network accessline 217
    - [Add keep rules](https://developer.android.com/topic/performance/app-optimization/add-keep-rules) to keep some code untouched.
  • Network accessline 217
    - [Add keep rules](https://developer.android.com/topic/performance/app-optimization/add-keep-rules) to keep some code untouched.
  • Network accessline 218
    - [Adopt optimizations incrementally](https://developer.android.com/topic/performance/app-optimization/adopt-optimizations-incrementally).
  • Network accessline 218
    - [Adopt optimizations incrementally](https://developer.android.com/topic/performance/app-optimization/adopt-optimizations-incrementally).
  • Network accessline 220
    optimization](https://developer.android.com/topic/performance/app-optimization/choose-libraries-wisely).
  • Network accessline 220
    optimization](https://developer.android.com/topic/performance/app-optimization/choose-libraries-wisely).
  • Network accessline 222
    > [!CAUTION] > **Caution:** Tools that replace or modify R8's output can negatively impact runtime performance. R8 is careful about including and testing many optimizations at the code level, in [DEX layout](https://developer.android.com/to
  • Network accessline 222
    > [!CAUTION] > **Caution:** Tools that replace or modify R8's output can negatively impact runtime performance. R8 is careful about including and testing many optimizations at the code level, in [DEX layout](https://developer.android.com/to
  • Network accessline 223
    > **Caution:** Tools that replace or modify R8's output can negatively impact runtime performance. R8 is careful about including and testing many optimizations at the code level, in [DEX layout](https://developer.android.com/topic/performan
  • Network accessline 223
    > **Caution:** Tools that replace or modify R8's output can negatively impact runtime performance. R8 is careful about including and testing many optimizations at the code level, in [DEX layout](https://developer.android.com/topic/performan
  • Network accessline 225
    If you are interested in optimizing your build speed, see [Configure how R8 runs](https://developer.android.com/build/r8-execution-profiles) for information on how to configure R8 based on your environment.
  • Network accessline 225
    If you are interested in optimizing your build speed, see [Configure how R8 runs](https://developer.android.com/build/r8-execution-profiles) for information on how to configure R8 based on your environment.
  • Network accessline 226
    runs](https://developer.android.com/build/r8-execution-profiles) for information on how to configure R8 based on your environment.
  • Network accessline 226
    runs](https://developer.android.com/build/r8-execution-profiles) for information on how to configure R8 based on your environment.
  • Network accessline 234
    |---|---| | 9.3 | **Simplified DSL:** New \`optimization {}\` block enables requires less configuration- optimized resource shrinking is always enabled, default Android keep rules are opt-out. <br /> **\`keepRules\` source set:** If you use
  • Network accessline 234
    |---|---| | 9.3 | **Simplified DSL:** New \`optimization {}\` block enables requires less configuration- optimized resource shrinking is always enabled, default Android keep rules are opt-out. <br /> **\`keepRules\` source set:** If you use
  • Network accessline 235
    | 9.3 | **Simplified DSL:** New \`optimization {}\` block enables requires less configuration- optimized resource shrinking is always enabled, default Android keep rules are opt-out. <br /> **\`keepRules\` source set:** If you use the new D
  • Network accessline 235
    | 9.3 | **Simplified DSL:** New \`optimization {}\` block enables requires less configuration- optimized resource shrinking is always enabled, default Android keep rules are opt-out. <br /> **\`keepRules\` source set:** If you use the new D
  • Network accessline 236
    | 9.1 | **Classes repackaged by default:** R8 repackages classes (moving them to the unnamed package, at the top level) to compact DEX further, eliminating the need to specify `-repackageclasses` option. For information about how this works
  • Network accessline 236
    | 9.1 | **Classes repackaged by default:** R8 repackages classes (moving them to the unnamed package, at the top level) to compact DEX further, eliminating the need to specify `-repackageclasses` option. For information about how this works
  • Network accessline 237
    | 9.0 | **Optimized resource shrinking:** Enabled by default (controlled using `android.r8.optimizedResourceShrinking`). [Optimized resource shrinking](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization
  • Network accessline 237
    | 9.0 | **Optimized resource shrinking:** Enabled by default (controlled using `android.r8.optimizedResourceShrinking`). [Optimized resource shrinking](https://developer.android.com/topic/performance/app-optimization/enable-app-optimization
  • Network accessline 238
    | 8.12 | **Optimized resource shrinking:** Initial support added (controlled using `android.r8.optimizedResourceShrinking`). [Optimized resource shrinking](https://developer.android.com/topic/performance/app-optimization/enable-app-optimiza
  • Network accessline 238
    | 8.12 | **Optimized resource shrinking:** Initial support added (controlled using `android.r8.optimizedResourceShrinking`). [Optimized resource shrinking](https://developer.android.com/topic/performance/app-optimization/enable-app-optimiza
  • Network accessline 239
    | 8.6 | **Improved retracing:** Includes filename and line number retracing by default for all `minSdk` levels (previously required `minSdk` 26+ in version 8.2). Updating R8 helps ensure that stack traces from obfuscated builds are readily 
  • Network accessline 239
    | 8.6 | **Improved retracing:** Includes filename and line number retracing by default for all `minSdk` levels (previously required `minSdk` 26+ in version 8.2). Updating R8 helps ensure that stack traces from obfuscated builds are readily 
  • Network accessline 240
    | 8.0 | **Full mode by default:** [R8 full mode](https://developer.android.com/topic/performance/app-optimization/full-mode) provides significantly more powerful optimization. It is enabled by default. You can opt out using `android.enableR
  • Network accessline 240
    | 8.0 | **Full mode by default:** [R8 full mode](https://developer.android.com/topic/performance/app-optimization/full-mode) provides significantly more powerful optimization. It is enabled by default. You can opt out using `android.enableR
  • Network accessline 245
    While AGP is the recommended and officially supported build system for Android apps, you might use an alternative build system like [Bazel](https://bazel.build/). If
  • Network accessline 245
    While AGP is the recommended and officially supported build system for Android apps, you might use an alternative build system like [Bazel](https://bazel.build/). If
  • Network accessline 246
    apps, you might use an alternative build system like [Bazel](https://bazel.build/). If
  • Network accessline 246
    apps, you might use an alternative build system like [Bazel](https://bazel.build/). If
  • Network accessline 250
    For information about optimizing an Android app using Bazel, see Bazel's [`rules_android` documentation](https://github.com/bazelbuild/rules_android/tree/main/docs/r8-optimization.md). Note that Bazel isn't
  • Network accessline 250
    For information about optimizing an Android app using Bazel, see Bazel's [`rules_android` documentation](https://github.com/bazelbuild/rules_android/tree/main/docs/r8-optimization.md). Note that Bazel isn't
  • Network accessline 251
    [`rules_android` documentation](https://github.com/bazelbuild/rules_android/tree/main/docs/r8-optimization.md). Note that Bazel isn't
  • Network accessline 251
    [`rules_android` documentation](https://github.com/bazelbuild/rules_android/tree/main/docs/r8-optimization.md). Note that Bazel isn't
  • Network accessline 252
    [officially supported](https://developer.android.com/build#other-build-systems) for Android app development.
  • Network accessline 252
    [officially supported](https://developer.android.com/build#other-build-systems) for Android app development.

performance/r8-analyzer/scripts/analyze.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

performance/r8-analyzer/scripts/convert_pb_to_json.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

performance/r8-analyzer/scripts/keep_radius_pb2.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 90
    b' \x01(\x0b21.com.android.tools.r8.blastradius.proto.BuildInfo*\x1f\n\x0bKeepRuleTag\x12\x10\n\x0cPACKAGE_WIDE\x10\x00*H\n\x0eKeepConstraint\x12\x12\n\x0eDONT_OBFUSCATE\x10\x00\x12\x11\n\rDONT_OPTIMIZE\x10\x01\x12\x0f\n\x0bDONT_SHRINK\x10\
  • Possible obfuscationline 90
    b' \x01(\x0b21.com.android.tools.r8.blastradius.proto.BuildInfo*\x1f\n\x0bKeepRuleTag\x12\x10\n\x0cPACKAGE_WIDE\x10\x00*H\n\x0eKeepConstraint\x12\x12\n\x0eDONT_OBFUSCATE\x10\x00\x12\x11\n\rDONT_OPTIMIZE\x10\x01\x12\x0f\n\x0bDONT_SHRINK\x10\

play/engage-sdk-integration/references/android/guide/playcore/engage/faq.md

  • Network accessline 43
    The verification app doesn't support testing broadcast intent with permission. You have to remove permissions while testing and add them back before switching the SDK to prod version in [Step 6](https://developer.android.com/guide/playcore/
  • Network accessline 43
    The verification app doesn't support testing broadcast intent with permission. You have to remove permissions while testing and add them back before switching the SDK to prod version in [Step 6](https://developer.android.com/guide/playcore/
  • Network accessline 45
    add them back before switching the SDK to prod version in [Step 6](https://developer.android.com/guide/playcore/engage/workflow#switch-to-prod).
  • Network accessline 45
    add them back before switching the SDK to prod version in [Step 6](https://developer.android.com/guide/playcore/engage/workflow#switch-to-prod).
  • Network accessline 95
    The deep links are a great way to track the attribution. The deep link URLs that take users to your app can be included with additional tracking params. For example - "http://xx/deeplink?source_tag=engage".
  • Network accessline 95
    The deep links are a great way to track the attribution. The deep link URLs that take users to your app can be included with additional tracking params. For example - "http://xx/deeplink?source_tag=engage".
  • Network accessline 97
    For example - "http://xx/deeplink?source_tag=engage".
  • Network accessline 97
    For example - "http://xx/deeplink?source_tag=engage".
  • Network accessline 129
    - Increased engagement and retention: Engage helps bring users back to your app, even on new devices. By letting users resume their favorite shows, you increase the chances they'll keep watching. - Wider reach: Beyond Google TV, Engage work
  • Network accessline 129
    - Increased engagement and retention: Engage helps bring users back to your app, even on new devices. By letting users resume their favorite shows, you increase the chances they'll keep watching. - Wider reach: Beyond Google TV, Engage work
  • Network accessline 131
    - Backward compatible: If you're already using the older "[Watch Next](https://developer.android.com/training/tv/discovery/watch-next-add-programs)" feature, no problem! Engage is backward compatible, so your existing integration will still
  • Network accessline 131
    - Backward compatible: If you're already using the older "[Watch Next](https://developer.android.com/training/tv/discovery/watch-next-add-programs)" feature, no problem! Engage is backward compatible, so your existing integration will still
  • Network accessline 166
    Image requirements have been updated in the [Create Entities](https://developer.android.com/guide/playcore/engage/watch#image-specs)
  • Network accessline 166
    Image requirements have been updated in the [Create Entities](https://developer.android.com/guide/playcore/engage/watch#image-specs)

play/engage-sdk-integration/references/android/guide/playcore/engage/food.md

  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 27
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 27
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 31
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 31
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 54
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-entities.png) **Figure :**\`ProductEntity\`, \`StoreEntity\`, and \`RecipeEntity\`. (\*UI for illustrative purposes only)
  • Network accessline 54
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-entities.png) **Figure :**\`ProductEntity\`, \`StoreEntity\`, and \`RecipeEntity\`. (\*UI for illustrative purposes only)
  • Network accessline 61
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-featured.png) **Figure :** Featured cluster with the \`RecipeEntity\`. (\*UI for illustrative purposes only)
  • Network accessline 61
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-featured.png) **Figure :** Featured cluster with the \`RecipeEntity\`. (\*UI for illustrative purposes only)
  • Network accessline 70
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-shopping-cart.png) **Figure:** Food Shopping Cart cluster from a single partner. (\*UI for illustrative purposes only)
  • Network accessline 70
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-shopping-cart.png) **Figure:** Food Shopping Cart cluster from a single partner. (\*UI for illustrative purposes only)
  • Network accessline 76
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-shopping-list.png) **Figure:** Food Shopping List cluster from a single partner. (\*UI for illustrative purposes only)
  • Network accessline 76
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-shopping-list.png) **Figure:** Food Shopping List cluster from a single partner. (\*UI for illustrative purposes only)
  • Network accessline 87
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-reorder-cluster.png) **Figure:** Food Reorder cluster from a single partner. (\*UI for illustrative purposes only)
  • Network accessline 87
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-reorder-cluster.png) **Figure:** Food Reorder cluster from a single partner. (\*UI for illustrative purposes only)
  • Network accessline 102
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 102
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 103
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 103
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 139
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-product-entity.png) **Figure :** Attributes of `ProductEntity`
  • Network accessline 139
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-product-entity.png) **Figure :** Attributes of `ProductEntity`
  • Network accessline 143
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) fo
  • Network accessline 143
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) fo
  • Network accessline 144
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. | | Action Uri | **Required** | The dee
  • Network accessline 144
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. | | Action Uri | **Required** | The dee
  • Network accessline 145
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. |
  • Network accessline 145
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. |
  • Network accessline 146
    | Action Uri | **Required** | The deep link to the page in the app displaying details about the product. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 146
    | Action Uri | **Required** | The deep link to the page in the app displaying details about the product. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 168
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-store-entity.png) **Figure :** Attributes of `StoreEntity`
  • Network accessline 168
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-store-entity.png) **Figure :** Attributes of `StoreEntity`
  • Network accessline 172
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) fo
  • Network accessline 172
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) fo
  • Network accessline 173
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. | | Action Uri | **Required** | The dee
  • Network accessline 173
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. | | Action Uri | **Required** | The dee
  • Network accessline 174
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. |
  • Network accessline 174
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. |
  • Network accessline 175
    | Action Uri | **Required** | The deep link to the page in the app displaying details about the store. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 175
    | Action Uri | **Required** | The deep link to the page in the app displaying details about the store. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 195
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-recipe-entity.png) **Figure :** Attributes of `RecipeEntity`
  • Network accessline 195
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-recipe-entity.png) **Figure :** Attributes of `RecipeEntity`
  • Network accessline 199
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) fo
  • Network accessline 199
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) fo
  • Network accessline 200
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. | | Action Uri | **Required** | The dee
  • Network accessline 200
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. | | Action Uri | **Required** | The dee
  • Network accessline 201
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. |
  • Network accessline 201
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/food#image-specs) for guidance. |
  • Network accessline 202
    | Action Uri | **Required** | The deep link to the page in the app displaying details about the recipe. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attr
  • Network accessline 202
    | Action Uri | **Required** | The deep link to the page in the app displaying details about the recipe. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attr
  • Network accessline 219
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-shopping-cart-attributes.png) **Figure:** Food Shopping Cart cluster attributes.
  • Network accessline 219
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-shopping-cart-attributes.png) **Figure:** Food Shopping Cart cluster attributes.
  • Network accessline 223
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 223
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 224
    |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 224
    |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 225
    | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 225
    | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 228
    | Title | Optional | The title of the cart (for example, *Your cart*). **If no title is provided by the developer, *Your cart* is the default.** | Free text **Recommended text size: under 25 chars** (Text that is too long may show ellipses)
  • Network accessline 228
    | Title | Optional | The title of the cart (for example, *Your cart*). **If no title is provided by the developer, *Your cart* is the default.** | Free text **Recommended text size: under 25 chars** (Text that is too long may show ellipses)
  • Network accessline 229
    | Action Text | Optional | The call to action text of the button on the Shopping Cart (for example, *Your Shopping Bag*). **If no action text is provided by the developer, *View Cart* is the default.** This attribute is supported in version
  • Network accessline 229
    | Action Text | Optional | The call to action text of the button on the Shopping Cart (for example, *Your Shopping Bag*). **If no action text is provided by the developer, *View Cart* is the default.** This attribute is supported in version
  • Network accessline 230
    | Cart images | Optional | Images of each product in the cart. **Up to 10 images can be provided in order of priority; the actual number of images displayed depends on the device form factor.** | See [Image Specifications](https://developer
  • Network accessline 230
    | Cart images | Optional | Images of each product in the cart. **Up to 10 images can be provided in order of priority; the actual number of images displayed depends on the device form factor.** | See [Image Specifications](https://developer
  • Network accessline 240
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-shopping-list.png) **Figure:** Food Shopping List cluster.
  • Network accessline 240
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-shopping-list.png) **Figure:** Food Shopping List cluster.
  • Network accessline 244
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 244
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 245
    |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 245
    |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 246
    | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 246
    | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 256
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-reorder-cluster.png) **Figure:** Food Reorder cluster.
  • Network accessline 256
    ![](https://developer.android.com/static/images/guide/playcore/engage/food-reorder-cluster.png) **Figure:** Food Reorder cluster.
  • Network accessline 260
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.co
  • Network accessline 260
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.co
  • Network accessline 261
    |---|---|---|---| | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) 
  • Network accessline 261
    |---|---|---|---| | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) 
  • Network accessline 262
    | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 262
    | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 265
    | Title | **Required** | The title of the reorder item. | Free text **Recommended text size: under 40 chars** (Text that is too long may show ellipses) | | Item labels | Optional (If not provided, poster images should be provided) | The lis
  • Network accessline 265
    | Title | **Required** | The title of the reorder item. | Free text **Recommended text size: under 40 chars** (Text that is too long may show ellipses) | | Item labels | Optional (If not provided, poster images should be provided) | The lis
  • Network accessline 267
    | Poster images | Optional (If not provided, item labels should be provided) | Images of the items in the previous order. **Up to 10 images can be provided in order of priority; the actual number of images displayed depends on the device fo
  • Network accessline 267
    | Poster images | Optional (If not provided, item labels should be provided) | Images of the items in the previous order. **Up to 10 images can be provided in order of priority; the actual number of images displayed depends on the device fo
  • Network accessline 294
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 294
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 295
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 295
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 329
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 329
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 333
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 333
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 470
    | Title | **Required** | The title for the Recommendation Cluster (for example, *Big savings on Thanksgiving menu*). **Recommended text size: under 25 chars** (Text that is too long may show ellipses) | | Subtitle | Optional | The subtitle 
  • Network accessline 470
    | Title | **Required** | The title for the Recommendation Cluster (for example, *Big savings on Thanksgiving menu*). **Recommended text size: under 25 chars** (Text that is too long may show ellipses) | | Subtitle | Optional | The subtitle 
  • Network accessline 472
    | Action Uri | Optional | The deep link to the page in the partner app where users can see the complete list of recommendations. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/
  • Network accessline 472
    | Action Uri | Optional | The deep link to the page in the partner app where users can see the complete list of recommendations. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/
  • Network accessline 677
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 677
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 678
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 678
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 679
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 679
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 682
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 682
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 683
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 683
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 684
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 684
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 696
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 696
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 697
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 697
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 698
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 698
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 701
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 701
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 702
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 702
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 703
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 703
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 987
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 987
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 988
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 988
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 989
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 989
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1138
    The following [intents](https://developer.android.com/reference/android/content/Intent) will be sent by the
  • Network accessline 1138
    The following [intents](https://developer.android.com/reference/android/content/Intent) will be sent by the
  • Network accessline 1149
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1149
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1150
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1150
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1154
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for
  • Network accessline 1154
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for

play/engage-sdk-integration/references/android/guide/playcore/engage/healthandfitness.md

  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 26
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 26
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 30
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 30
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 66
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-health-and-fitness.png) **Figure 1:** UI showing a single ArticleEntity within Recommendations cluster.
  • Network accessline 66
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-health-and-fitness.png) **Figure 1:** UI showing a single ArticleEntity within Recommendations cluster.
  • Network accessline 71
    ![](https://developer.android.com/static/images/guide/playcore/engage/person-entity-health-and-fitness.png) **Figure 2:** UI showing a single PersonEntity within Recommendations cluster.
  • Network accessline 71
    ![](https://developer.android.com/static/images/guide/playcore/engage/person-entity-health-and-fitness.png) **Figure 2:** UI showing a single PersonEntity within Recommendations cluster.
  • Network accessline 78
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-entity-health-and-fitness.png) **Figure 3:** UI showing a single EventEntity within Recommendations cluster.
  • Network accessline 78
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-entity-health-and-fitness.png) **Figure 3:** UI showing a single EventEntity within Recommendations cluster.
  • Network accessline 91
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-continuation-health-and-fitness.png) **Figure 6.** UI showing a single ArticleEntity within a Continuation cluster.
  • Network accessline 91
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-continuation-health-and-fitness.png) **Figure 6.** UI showing a single ArticleEntity within a Continuation cluster.
  • Network accessline 96
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-reservation-entity-health-and-fitness.png) **Figure 8.** UI showing a single EventReservationEntity within a Continuation cluster.
  • Network accessline 96
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-reservation-entity-health-and-fitness.png) **Figure 8.** UI showing a single EventReservationEntity within a Continuation cluster.
  • Network accessline 108
    ![](https://developer.android.com/static/images/guide/playcore/engage/featured-item-health-and-fitness.png) **Figure 12:** UI showing a single hero GenericFeaturedEntity card within a Featured cluster
  • Network accessline 108
    ![](https://developer.android.com/static/images/guide/playcore/engage/featured-item-health-and-fitness.png) **Figure 12:** UI showing a single hero GenericFeaturedEntity card within a Featured cluster
  • Network accessline 123
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 123
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 124
    [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 124
    [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 151
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 151
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 152
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 152
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 153
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 153
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 154
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, please ensure safe space of 24 dps at both the top and bottom of the image | Se
  • Network accessline 154
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, please ensure safe space of 24 dps at both the top and bottom of the image | Se
  • Network accessline 158
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Optiona
  • Network accessline 158
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Optiona
  • Network accessline 159
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 159
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 160
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 160
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 161
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/healthandfitness#content-category) for guidance. |
  • Network accessline 161
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/healthandfitness#content-category) for guidance. |
  • Network accessline 165
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 165
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 166
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 166
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 167
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 167
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 168
    | Title | **Required** | Title of the entity. | Free text **Recommended text size: Max 50 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image i
  • Network accessline 168
    | Title | **Required** | Title of the entity. | Free text **Recommended text size: Max 50 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image i
  • Network accessline 169
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, please ensure safe space of 24 dps at both the top and
  • Network accessline 169
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, please ensure safe space of 24 dps at both the top and
  • Network accessline 170
    | Source - Title | Optional | The name of the author, organization, or reporter | Free text **Recommended text size: Under 25 chars** | | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [
  • Network accessline 170
    | Source - Title | Optional | The name of the author, organization, or reporter | Free text **Recommended text size: Under 25 chars** | | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [
  • Network accessline 171
    | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [Image Specifications](https://developer.android.com/guide/playcore/engage/healthandfitness#image-specs) for guidance. |
  • Network accessline 171
    | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [Image Specifications](https://developer.android.com/guide/playcore/engage/healthandfitness#image-specs) for guidance. |
  • Network accessline 174
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Optiona
  • Network accessline 174
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Optiona
  • Network accessline 175
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 175
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 176
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 176
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 178
    | Last Engagement Time | Conditionally Required | The epoch timestamp in milliseconds when the user interacted with this entity last time. **Note:** This field is required if this entity is part of the continuation cluster. | Epoch timestam
  • Network accessline 178
    | Last Engagement Time | Conditionally Required | The epoch timestamp in milliseconds when the user interacted with this entity last time. **Note:** This field is required if this entity is part of the continuation cluster. | Epoch timestam
  • Network accessline 180
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/healthandfitness#content-category) for guidance. |
  • Network accessline 180
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/healthandfitness#content-category) for guidance. |
  • Network accessline 184
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 184
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 185
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 185
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 186
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 186
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 187
    | Profile - Name | **Required** | Profile name or id or handle, eg "John Doe", "@TeamPixel", etc. | String **Recommended text size: Max 50 chars** | | Profile - Avatar | **Required** | Profile picture or avatar image of the user. **Note:**M
  • Network accessline 187
    | Profile - Name | **Required** | Profile name or id or handle, eg "John Doe", "@TeamPixel", etc. | String **Recommended text size: Max 50 chars** | | Profile - Avatar | **Required** | Profile picture or avatar image of the user. **Note:**M
  • Network accessline 188
    | Profile - Avatar | **Required** | Profile picture or avatar image of the user. **Note:**Must be Square 1:1 image. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/healthandfitness#image-specs) for guidance.
  • Network accessline 188
    | Profile - Avatar | **Required** | Profile picture or avatar image of the user. **Note:**Must be Square 1:1 image. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/healthandfitness#image-specs) for guidance.
  • Network accessline 189
    | Profile - Additional Text | Optional | Free text like the profile handle. | Free text **Recommended text size: Max 15 chars** | | Profile - Additional Image | Optional | Small image like a verified badge. | See [Image Specifications](http
  • Network accessline 189
    | Profile - Additional Text | Optional | Free text like the profile handle. | Free text **Recommended text size: Max 15 chars** | | Profile - Additional Image | Optional | Small image like a verified badge. | See [Image Specifications](http
  • Network accessline 190
    | Profile - Additional Image | Optional | Small image like a verified badge. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/healthandfitness#image-specs) for guidance. |
  • Network accessline 190
    | Profile - Additional Image | Optional | Small image like a verified badge. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/healthandfitness#image-specs) for guidance. |
  • Network accessline 191
    | Header image | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, please ensure safe space of 24 dps at both the top and 
  • Network accessline 191
    | Header image | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, please ensure safe space of 24 dps at both the top and 
  • Network accessline 193
    | Popularity - Count Value | Optional | The number of followers or popularity value. **Note:** Provide Count Value if your app doesn't want to handle logic on how a large number should be optimized for different display sizes. If both Count
  • Network accessline 193
    | Popularity - Count Value | Optional | The number of followers or popularity value. **Note:** Provide Count Value if your app doesn't want to handle logic on how a large number should be optimized for different display sizes. If both Count
  • Network accessline 194
    | Popularity - Label | Optional | Indicate what the popularity label is. For example - "Likes". | String **Recommended text size: Max 20 chars for count + label combined** | | Popularity - Visual | Optional | Indicate what the interaction i
  • Network accessline 194
    | Popularity - Label | Optional | Indicate what the popularity label is. For example - "Likes". | String **Recommended text size: Max 20 chars for count + label combined** | | Popularity - Visual | Optional | Indicate what the interaction i
  • Network accessline 195
    | Popularity - Visual | Optional | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, though not all may not be shown on all form factors. **Note:** Must be Square 1:1 image |
  • Network accessline 195
    | Popularity - Visual | Optional | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, though not all may not be shown on all form factors. **Note:** Must be Square 1:1 image |
  • Network accessline 207
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 207
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 208
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 208
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 209
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 209
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 210
    | Description | Optional | A single paragraph of text to describe the entity. **Note:** Either description or subtitle list will be displayed to the user, not both. | Free text **Recommended text size: 180 chars** | | Subtitle list | Option
  • Network accessline 210
    | Description | Optional | A single paragraph of text to describe the entity. **Note:** Either description or subtitle list will be displayed to the user, not both. | Free text **Recommended text size: 180 chars** | | Subtitle list | Option
  • Network accessline 212
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_HEALTH_AND_FITENESS (Example - Yoga/fitness trainer) - TYPE_HOME_AND_AUTO (Example - Plumber) - TYPE_SPORTS (Example - Pla
  • Network accessline 212
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_HEALTH_AND_FITENESS (Example - Yoga/fitness trainer) - TYPE_HOME_AND_AUTO (Example - Plumber) - TYPE_SPORTS (Example - Pla
  • Network accessline 216
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 216
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 217
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 217
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 218
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 218
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 220
    | Start time | **Required** | The epoch timestamp when the event is expected to start. **Note:**This will be represented in milliseconds. | Epoch timestamp in milliseconds | | Event mode | **Required** | A field to indicate whether the even
  • Network accessline 220
    | Start time | **Required** | The epoch timestamp when the event is expected to start. **Note:**This will be represented in milliseconds. | Epoch timestamp in milliseconds | | Event mode | **Required** | A field to indicate whether the even
  • Network accessline 221
    | Event mode | **Required** | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Re
  • Network accessline 221
    | Event mode | **Required** | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Re
  • Network accessline 222
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, please ensure safe space of 24 dps at both the top
  • Network accessline 222
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, please ensure safe space of 24 dps at both the top
  • Network accessline 233
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 233
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 234
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 234
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 235
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 235
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 237
    | Price - StrikethroughPrice | Optional | The original price of the ticket/pass for the event. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text
  • Network accessline 237
    | Price - StrikethroughPrice | Optional | The original price of the ticket/pass for the event. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text
  • Network accessline 239
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 239
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 243
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 243
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 244
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 244
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 245
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 245
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 254
    | Location - Zip code | Optional | The zip code (if applicable) of the location in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicab
  • Network accessline 254
    | Location - Zip code | Optional | The zip code (if applicable) of the location in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicab
  • Network accessline 255
    | Location - Neighborhood | Optional | The neighborhood (if applicable) in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images 
  • Network accessline 255
    | Location - Neighborhood | Optional | The neighborhood (if applicable) in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images 
  • Network accessline 256
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, please ensure safe space of 24 dps at both the top and
  • Network accessline 256
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, please ensure safe space of 24 dps at both the top and
  • Network accessline 257
    | End time | Optional | The epoch timestamp when the event is expected to end. **Note:**This will be represented in milliseconds. | Epoch timestamp in milliseconds | | Service Provider - Name | Optional | The name of the service provider. *
  • Network accessline 257
    | End time | Optional | The epoch timestamp when the event is expected to end. **Note:**This will be represented in milliseconds. | Epoch timestamp in milliseconds | | Service Provider - Name | Optional | The name of the service provider. *
  • Network accessline 258
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, name of the event organizer/tour | | Service Provider - Image | Optional 
  • Network accessline 258
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, name of the event organizer/tour | | Service Provider - Image | Optional 
  • Network accessline 259
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/healthandfi
  • Network accessline 259
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/healthandfi
  • Network accessline 262
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 262
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 263
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 263
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 264
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 264
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 271
    | Rating - Count | Optional | The count of the ratings for the event. **Note:** Provide this field if your app wants to control how this is displayed to the users. Please provide the concise string that can be displayed to the user. For exa
  • Network accessline 271
    | Rating - Count | Optional | The count of the ratings for the event. **Note:** Provide this field if your app wants to control how this is displayed to the users. Please provide the concise string that can be displayed to the user. For exa
  • Network accessline 273
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 273
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 333
    - TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from [Watch integration guide](https://developer.android.com/guide/playcore/engage/watch) before using the generic entities.
  • Network accessline 333
    - TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from [Watch integration guide](https://developer.android.com/guide/playcore/engage/watch) before using the generic entities.
  • Network accessline 334
    - TYPE_BOOKS - Check out the [EbookEntity](https://developer.android.com/guide/playcore/engage/read#ebookentity) before using the generic entities.
  • Network accessline 334
    - TYPE_BOOKS - Check out the [EbookEntity](https://developer.android.com/guide/playcore/engage/read#ebookentity) before using the generic entities.
  • Network accessline 335
    - TYPE_AUDIOBOOKS - Check out [AudiobookEntity](https://developer.android.com/guide/playcore/engage/read#audiobookentity) before using the generic entities.
  • Network accessline 335
    - TYPE_AUDIOBOOKS - Check out [AudiobookEntity](https://developer.android.com/guide/playcore/engage/read#audiobookentity) before using the generic entities.
  • Network accessline 336
    - TYPE_SHOPPING - Check out [ShoppingEntity](https://developer.android.com/guide/playcore/engage/shopping#shoppingEntity) before using the generic entities.
  • Network accessline 336
    - TYPE_SHOPPING - Check out [ShoppingEntity](https://developer.android.com/guide/playcore/engage/shopping#shoppingEntity) before using the generic entities.
  • Network accessline 337
    - TYPE_FOOD_AND_DRINK - Check out entities from [Food Integration guide](https://developer.android.com/guide/playcore/engage/food) before using the generic entities.
  • Network accessline 337
    - TYPE_FOOD_AND_DRINK - Check out entities from [Food Integration guide](https://developer.android.com/guide/playcore/engage/food) before using the generic entities.
  • Network accessline 347
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 347
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 348
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 348
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 378
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 378
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 382
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 382
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 648
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 648
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 649
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 649
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 650
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 650
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 653
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 653
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 654
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 654
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 655
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 655
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 667
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 667
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 668
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 668
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 669
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 669
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 672
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 672
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 673
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 673
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 674
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 674
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 935
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 935
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 936
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 936
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 937
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 937
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1045
    The following [intents](https://developer.android.com/reference/android/content/Intent) is sent by the
  • Network accessline 1045
    The following [intents](https://developer.android.com/reference/android/content/Intent) is sent by the
  • Network accessline 1054
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1054
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1055
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1055
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1059
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for
  • Network accessline 1059
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for

play/engage-sdk-integration/references/android/guide/playcore/engage/listen.md

  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 27
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 27
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 31
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 31
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 54
    ![](https://developer.android.com/static/images/guide/playcore/engage/listen-term-1.png) **Figure 1.** Entertainment Space UI showing a Recommendation Cluster from a single partner.
  • Network accessline 54
    ![](https://developer.android.com/static/images/guide/playcore/engage/listen-term-1.png) **Figure 1.** Entertainment Space UI showing a Recommendation Cluster from a single partner.
  • Network accessline 55
    - **Entity:** An object representing a single item in a cluster. An entity     can be a playlist, an audiobook, a podcast, and more. See the [Provide     entity data](https://developer.android.com/guide/playcore/engage/listen#provide-entity
  • Network accessline 55
    - **Entity:** An object representing a single item in a cluster. An entity     can be a playlist, an audiobook, a podcast, and more. See the [Provide     entity data](https://developer.android.com/guide/playcore/engage/listen#provide-entity
  • Network accessline 56
    can be a playlist, an audiobook, a podcast, and more. See the [Provide     entity data](https://developer.android.com/guide/playcore/engage/listen#provide-entity-data) section for a list of supported entity     types.
  • Network accessline 56
    can be a playlist, an audiobook, a podcast, and more. See the [Provide     entity data](https://developer.android.com/guide/playcore/engage/listen#provide-entity-data) section for a list of supported entity     types.
  • Network accessline 57
    entity data](https://developer.android.com/guide/playcore/engage/listen#provide-entity-data) section for a list of supported entity
  • Network accessline 57
    entity data](https://developer.android.com/guide/playcore/engage/listen#provide-entity-data) section for a list of supported entity
  • Network accessline 60
    ![](https://developer.android.com/static/images/guide/playcore/engage/listen-term-2.png) **Figure 2.** Entertainment Space UI showing a single Entity within a single partner's Recommendation Cluster.
  • Network accessline 60
    ![](https://developer.android.com/static/images/guide/playcore/engage/listen-term-2.png) **Figure 2.** Entertainment Space UI showing a single Entity within a single partner's Recommendation Cluster.
  • Network accessline 66
    ![](https://developer.android.com/static/images/guide/playcore/engage/listen-term-3.png) **Figure 3.** Entertainment Space UI showing a Continuation cluster with unfinished recommendations from multiple partners (only one recommendation is 
  • Network accessline 66
    ![](https://developer.android.com/static/images/guide/playcore/engage/listen-term-3.png) **Figure 3.** Entertainment Space UI showing a Continuation cluster with unfinished recommendations from multiple partners (only one recommendation is 
  • Network accessline 73
    ![](https://developer.android.com/static/images/guide/playcore/engage/listen-term-4.png) **Figure 4.** Entertainment Space UI showing a Featured cluster with recommendations from multiple partners (only one recommendation is currently visib
  • Network accessline 73
    ![](https://developer.android.com/static/images/guide/playcore/engage/listen-term-4.png) **Figure 4.** Entertainment Space UI showing a Featured cluster with recommendations from multiple partners (only one recommendation is currently visib
  • Network accessline 88
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 88
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 89
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 89
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 124
    |---|---|---| | Name | **Required** | The title of the music album. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) f
  • Network accessline 124
    |---|---|---| | Name | **Required** | The title of the music album. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) f
  • Network accessline 125
    | Name | **Required** | The title of the music album. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 125
    | Name | **Required** | The title of the music album. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 126
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 126
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 127
    | Info page uri | **Required** | The deep link to the provider app for details about the music album. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attrib
  • Network accessline 127
    | Info page uri | **Required** | The deep link to the provider app for details about the music album. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attrib
  • Network accessline 128
    | Artists | **Required** | List of artists in the music album. | | Playback uri | Optional | A deep link that starts playing the album in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 128
    | Artists | **Required** | List of artists in the music album. | | Playback uri | Optional | A deep link that starts playing the album in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 129
    | Playback uri | Optional | A deep link that starts playing the album in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 129
    | Playback uri | Optional | A deep link that starts playing the album in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 147
    |---|---|---| | Name | **Required** | Name of the music artist. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for g
  • Network accessline 147
    |---|---|---| | Name | **Required** | Name of the music artist. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for g
  • Network accessline 148
    | Name | **Required** | Name of the music artist. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | I
  • Network accessline 148
    | Name | **Required** | Name of the music artist. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | I
  • Network accessline 149
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 149
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 150
    | Info page uri | **Required** | The deep link to the provider app for details about the music artist. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 150
    | Info page uri | **Required** | The deep link to the provider app for details about the music artist. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 151
    | Playback uri | Optional | The deep link which starts playing the artist's songs in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 151
    | Playback uri | Optional | The deep link which starts playing the artist's songs in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 161
    |---|---|---| | Name | **Required** | Title of the music track. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for g
  • Network accessline 161
    |---|---|---| | Name | **Required** | Title of the music track. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for g
  • Network accessline 162
    | Name | **Required** | Title of the music track. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | P
  • Network accessline 162
    | Name | **Required** | Title of the music track. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | P
  • Network accessline 163
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 163
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 164
    | Playback uri | **Required** | A deep link that starts playing the music track in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribu
  • Network accessline 164
    | Playback uri | **Required** | A deep link that starts playing the music track in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribu
  • Network accessline 165
    | Artists | **Required** | List of artists for the music track. | | Info page uri | Optional | A deep link to the provider app for details about the music track. Note: You can use deep links for attribution. [Refer to this FAQ](https://deve
  • Network accessline 165
    | Artists | **Required** | List of artists for the music track. | | Info page uri | Optional | A deep link to the provider app for details about the music track. Note: You can use deep links for attribution. [Refer to this FAQ](https://deve
  • Network accessline 166
    | Info page uri | Optional | A deep link to the provider app for details about the music track. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution)
  • Network accessline 166
    | Info page uri | Optional | A deep link to the provider app for details about the music track. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution)
  • Network accessline 181
    |---|---|---| | Name | **Required** | Title of the music video. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for g
  • Network accessline 181
    |---|---|---| | Name | **Required** | Title of the music video. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for g
  • Network accessline 182
    | Name | **Required** | Title of the music video. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | P
  • Network accessline 182
    | Name | **Required** | Title of the music video. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | P
  • Network accessline 183
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 183
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 184
    | Playback uri | **Required** | A deep link that starts playing the music video in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribu
  • Network accessline 184
    | Playback uri | **Required** | A deep link that starts playing the music video in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribu
  • Network accessline 185
    | Info page uri | Optional | A deep link to the provider app for details about the music video. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution)
  • Network accessline 185
    | Info page uri | Optional | A deep link to the provider app for details about the music video. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution)
  • Network accessline 202
    |---|---|---| | Name | **Required** | Title of the playlist. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guid
  • Network accessline 202
    |---|---|---| | Name | **Required** | Title of the playlist. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guid
  • Network accessline 203
    | Name | **Required** | Title of the playlist. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | Play
  • Network accessline 203
    | Name | **Required** | Title of the playlist. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | Play
  • Network accessline 204
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 204
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 205
    | Playback uri | **Required** | A deep link that starts playing the music playlist in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attr
  • Network accessline 205
    | Playback uri | **Required** | A deep link that starts playing the music playlist in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attr
  • Network accessline 206
    | Info page uri | Optional | A deep link to the provider app for details about the music playlist. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attributi
  • Network accessline 206
    | Info page uri | Optional | A deep link to the provider app for details about the music playlist. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attributi
  • Network accessline 221
    |---|---|---| | Name | **Required** | Title of the podcast series. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) fo
  • Network accessline 221
    |---|---|---| | Name | **Required** | Title of the podcast series. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) fo
  • Network accessline 222
    | Name | **Required** | Title of the podcast series. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | 
  • Network accessline 222
    | Name | **Required** | Title of the podcast series. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | 
  • Network accessline 223
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 223
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 224
    | Info page uri | **Required** | A deep link to the provider app for details about the podcast series. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 224
    | Info page uri | **Required** | A deep link to the provider app for details about the podcast series. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 225
    | Playback uri | Optional | A deep link that starts playing the podcast series in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribut
  • Network accessline 225
    | Playback uri | Optional | A deep link that starts playing the podcast series in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribut
  • Network accessline 241
    |---|---|---| | Name | **Required** | Title of the podcast episode. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) f
  • Network accessline 241
    |---|---|---| | Name | **Required** | Title of the podcast episode. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) f
  • Network accessline 242
    | Name | **Required** | Title of the podcast episode. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 242
    | Name | **Required** | Title of the podcast episode. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 243
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 243
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 244
    | Playback uri | **Required** | A deep link that starts playing the podcast episode in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 244
    | Playback uri | **Required** | A deep link that starts playing the podcast episode in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 246
    | Duration | **Required** | The duration of the podcast episode in milliseconds. | | Publish Date | **Required** | Publish date of the podcast (in epoch milliseconds) | | Info page uri | Optional | A deep link to the provider app for detail
  • Network accessline 246
    | Duration | **Required** | The duration of the podcast episode in milliseconds. | | Publish Date | **Required** | Publish date of the podcast (in epoch milliseconds) | | Info page uri | Optional | A deep link to the provider app for detail
  • Network accessline 247
    | Publish Date | **Required** | Publish date of the podcast (in epoch milliseconds) | | Info page uri | Optional | A deep link to the provider app for details about the podcast episode. Note: You can use deep links for attribution. [Refer t
  • Network accessline 247
    | Publish Date | **Required** | Publish date of the podcast (in epoch milliseconds) | | Info page uri | Optional | A deep link to the provider app for details about the podcast episode. Note: You can use deep links for attribution. [Refer t
  • Network accessline 248
    | Info page uri | Optional | A deep link to the provider app for details about the podcast episode. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribut
  • Network accessline 248
    | Info page uri | Optional | A deep link to the provider app for details about the podcast episode. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribut
  • Network accessline 267
    |---|---|---| | Name | **Required** | Title of the live radio station. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs
  • Network accessline 267
    |---|---|---| | Name | **Required** | Title of the live radio station. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs
  • Network accessline 268
    | Name | **Required** | Title of the live radio station. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance
  • Network accessline 268
    | Name | **Required** | Title of the live radio station. | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance
  • Network accessline 269
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 269
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 270
    | Playback uri | **Required** | A deep link that starts playing the radio station in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 270
    | Playback uri | **Required** | A deep link that starts playing the radio station in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 271
    | Info page uri | Optional | A deep link to the provider app for details about the radio station. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attributio
  • Network accessline 271
    | Info page uri | Optional | A deep link to the provider app for details about the radio station. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attributio
  • Network accessline 284
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 284
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 285
    | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | Author | **Required** | A
  • Network accessline 285
    | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. | | Author | **Required** | A
  • Network accessline 286
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 286
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/listen#image-specs) for guidance. |
  • Network accessline 287
    | Author | **Required** | At least one author name must be provided. | | Action link uri | **Required** | The deep link to the provider app for the audiobook. Note: You can use deep links for attribution. [Refer to this FAQ](https://develop
  • Network accessline 287
    | Author | **Required** | At least one author name must be provided. | | Action link uri | **Required** | The deep link to the provider app for the audiobook. Note: You can use deep links for attribution. [Refer to this FAQ](https://develop
  • Network accessline 288
    | Action link uri | **Required** | The deep link to the provider app for the audiobook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 288
    | Action link uri | **Required** | The deep link to the provider app for the audiobook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 330
    .setName(NAME)                  .addPosterImage(new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 330
    .setName(NAME)                  .addPosterImage(new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 331
    .addPosterImage(new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(960)
  • Network accessline 331
    .addPosterImage(new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(960)
  • Network accessline 332
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 332
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 334
    .setImageWidthInPixel(408)                       .build())                 .setPlayBackUri(Uri.parse("https://play.google/album/play"))
  • Network accessline 334
    .setImageWidthInPixel(408)                       .build())                 .setPlayBackUri(Uri.parse("https://play.google/album/play"))
  • Network accessline 335
    .build())                 .setPlayBackUri(Uri.parse("https://play.google/album/play"))                 .setInfoPageUri(Uri.parse("https://play.google/album/info"))
  • Network accessline 335
    .build())                 .setPlayBackUri(Uri.parse("https://play.google/album/play"))                 .setInfoPageUri(Uri.parse("https://play.google/album/info"))
  • Network accessline 336
    .setPlayBackUri(Uri.parse("https://play.google/album/play"))
  • Network accessline 336
    .setPlayBackUri(Uri.parse("https://play.google/album/play"))
  • Network accessline 337
    .setInfoPageUri(Uri.parse("https://play.google/album/info"))
  • Network accessline 337
    .setInfoPageUri(Uri.parse("https://play.google/album/info"))
  • Network accessline 349
    .setName("Becoming")                 .addPosterImage(new Image.Builder()                      .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 349
    .setName("Becoming")                 .addPosterImage(new Image.Builder()                      .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 350
    .addPosterImage(new Image.Builder()                      .setImageUri(Uri.parse("http://www.x.com/image.png"))                      .setImageHeightInPixel(960)
  • Network accessline 350
    .addPosterImage(new Image.Builder()                      .setImageUri(Uri.parse("http://www.x.com/image.png"))                      .setImageHeightInPixel(960)
  • Network accessline 351
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 351
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 356
    .addNarrator("Michelle Obama")                 .setActionLinkUri(                    Uri.parse("https://play.google/audiobooks/1"))
  • Network accessline 356
    .addNarrator("Michelle Obama")                 .setActionLinkUri(                    Uri.parse("https://play.google/audiobooks/1"))
  • Network accessline 357
    .setActionLinkUri(                    Uri.parse("https://play.google/audiobooks/1"))                 .setDurationMillis(16335L)
  • Network accessline 357
    .setActionLinkUri(                    Uri.parse("https://play.google/audiobooks/1"))                 .setDurationMillis(16335L)
  • Network accessline 358
    Uri.parse("https://play.google/audiobooks/1"))
  • Network accessline 358
    Uri.parse("https://play.google/audiobooks/1"))
  • Network accessline 368
    It's recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 368
    It's recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 369
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 369
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 398
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 398
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 402
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 402
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 664
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 664
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 665
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 665
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 666
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 666
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 669
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 669
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 670
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 670
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 671
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 671
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 683
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 683
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 684
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 684
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 685
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 685
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 688
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 688
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 689
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 689
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 690
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 690
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 930
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 930
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 931
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 931
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 932
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 932
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1040
    The following [intents](https://developer.android.com/reference/android/content/Intent) will be sent by the
  • Network accessline 1040
    The following [intents](https://developer.android.com/reference/android/content/Intent) will be sent by the
  • Network accessline 1049
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1049
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1050
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1050
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1054
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for
  • Network accessline 1054
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for

play/engage-sdk-integration/references/android/guide/playcore/engage/otherverticals.md

  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 17
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 17
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 21
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 21
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 48
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-travel.png) **Figure 1:** UI showing a single ArticleEntity within Recommendations cluster.
  • Network accessline 48
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-travel.png) **Figure 1:** UI showing a single ArticleEntity within Recommendations cluster.
  • Network accessline 53
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-entity-travel.png) **Figure 2:** UI showing a single EventEntity within Recommendations cluster.
  • Network accessline 53
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-entity-travel.png) **Figure 2:** UI showing a single EventEntity within Recommendations cluster.
  • Network accessline 58
    ![](https://developer.android.com/static/images/guide/playcore/engage/lodging-entity-travel.png) **Figure 3:** UI showing a single LodgingEntity within Recommendations cluster.
  • Network accessline 58
    ![](https://developer.android.com/static/images/guide/playcore/engage/lodging-entity-travel.png) **Figure 3:** UI showing a single LodgingEntity within Recommendations cluster.
  • Network accessline 64
    ![](https://developer.android.com/static/images/guide/playcore/engage/store-entity-travel.png) **Figure 4:** UI showing a single StoreEntity within Recommendations cluster.
  • Network accessline 64
    ![](https://developer.android.com/static/images/guide/playcore/engage/store-entity-travel.png) **Figure 4:** UI showing a single StoreEntity within Recommendations cluster.
  • Network accessline 72
    ![](https://developer.android.com/static/images/guide/playcore/engage/poi-entity-travel.png) **Figure 5:** UI showing a single PointOfInterestEntity within Recommendations cluster.
  • Network accessline 72
    ![](https://developer.android.com/static/images/guide/playcore/engage/poi-entity-travel.png) **Figure 5:** UI showing a single PointOfInterestEntity within Recommendations cluster.
  • Network accessline 77
    ![](https://developer.android.com/static/images/guide/playcore/engage/person-entity-dating.png) **Figure 5:** UI showing a single PersonEntity within Recommendations cluster.
  • Network accessline 77
    ![](https://developer.android.com/static/images/guide/playcore/engage/person-entity-dating.png) **Figure 5:** UI showing a single PersonEntity within Recommendations cluster.
  • Network accessline 90
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-continuation-travel.png) **Figure 6.** UI showing a single ArticleEntity within a Continuation cluster.
  • Network accessline 90
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-continuation-travel.png) **Figure 6.** UI showing a single ArticleEntity within a Continuation cluster.
  • Network accessline 95
    ![](https://developer.android.com/static/images/guide/playcore/engage/restaurant-reservation-entity-travel.png) **Figure 7.** UI showing a single RestaurantReservationEntity within a Continuation cluster.
  • Network accessline 95
    ![](https://developer.android.com/static/images/guide/playcore/engage/restaurant-reservation-entity-travel.png) **Figure 7.** UI showing a single RestaurantReservationEntity within a Continuation cluster.
  • Network accessline 108
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-reservation-entity-travel.png) **Figure 8.** UI showing a single EventReservationEntity within a Continuation cluster.
  • Network accessline 108
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-reservation-entity-travel.png) **Figure 8.** UI showing a single EventReservationEntity within a Continuation cluster.
  • Network accessline 113
    ![](https://developer.android.com/static/images/guide/playcore/engage/lodging-reservation-entity-travel.png) **Figure 9.** UI showing a single LodgingReservationEntity within a Continuation cluster.
  • Network accessline 113
    ![](https://developer.android.com/static/images/guide/playcore/engage/lodging-reservation-entity-travel.png) **Figure 9.** UI showing a single LodgingReservationEntity within a Continuation cluster.
  • Network accessline 119
    ![](https://developer.android.com/static/images/guide/playcore/engage/transportation-reservation-entity-travel.png) **Figure 10.** UI showing a single TransportationReservationEntity within a Continuation cluster.
  • Network accessline 119
    ![](https://developer.android.com/static/images/guide/playcore/engage/transportation-reservation-entity-travel.png) **Figure 10.** UI showing a single TransportationReservationEntity within a Continuation cluster.
  • Network accessline 124
    ![](https://developer.android.com/static/images/guide/playcore/engage/vehicle-rental-reservation-entity-travel.png) **Figure 11.** UI showing a single VehicleRentalReservationEntity within a Continuation cluster.
  • Network accessline 124
    ![](https://developer.android.com/static/images/guide/playcore/engage/vehicle-rental-reservation-entity-travel.png) **Figure 11.** UI showing a single VehicleRentalReservationEntity within a Continuation cluster.
  • Network accessline 138
    ![](https://developer.android.com/static/images/guide/playcore/engage/featured-item-health-and-fitness.png) **Figure 12:** UI showing a single hero GenericFeaturedEntity card within a Featured cluster
  • Network accessline 138
    ![](https://developer.android.com/static/images/guide/playcore/engage/featured-item-health-and-fitness.png) **Figure 12:** UI showing a single hero GenericFeaturedEntity card within a Featured cluster
  • Network accessline 153
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 153
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 154
    [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 154
    [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 188
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 188
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 189
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 189
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 190
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 190
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 191
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Imag
  • Network accessline 191
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Imag
  • Network accessline 195
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example, as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Option
  • Network accessline 195
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example, as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Option
  • Network accessline 196
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 196
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 197
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 197
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 198
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/otherverticals#content-category) for guidance. |
  • Network accessline 198
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/otherverticals#content-category) for guidance. |
  • Network accessline 202
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 202
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 203
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 203
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 204
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 204
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 205
    | Title | **Required** | Title of the entity. | Free text **Recommended text size: Max 50 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image i
  • Network accessline 205
    | Title | **Required** | Title of the entity. | Free text **Recommended text size: Max 50 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image i
  • Network accessline 206
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom
  • Network accessline 206
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom
  • Network accessline 207
    | Source - Title | Optional | The name of the author, organization, or reporter | Free text **Recommended text size: Under 25 chars** | | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [
  • Network accessline 207
    | Source - Title | Optional | The name of the author, organization, or reporter | Free text **Recommended text size: Under 25 chars** | | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [
  • Network accessline 208
    | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. |
  • Network accessline 208
    | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. |
  • Network accessline 211
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Optiona
  • Network accessline 211
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Optiona
  • Network accessline 212
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 212
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 213
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 213
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 215
    | Last Engagement Time | Conditionally Required | The epoch timestamp in milliseconds when the user interacted with this entity last time. **Note:** This field is required if this entity is part of the continuation cluster. | Epoch timestam
  • Network accessline 215
    | Last Engagement Time | Conditionally Required | The epoch timestamp in milliseconds when the user interacted with this entity last time. **Note:** This field is required if this entity is part of the continuation cluster. | Epoch timestam
  • Network accessline 217
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/otherverticals#content-category) for guidance. |
  • Network accessline 217
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/otherverticals#content-category) for guidance. |
  • Network accessline 221
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 221
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 222
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 222
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 223
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 223
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 225
    | Start time | **Required** | The epoch timestamp when the event is expected to start. **Note:**This will be represented in milliseconds. | Epoch timestamp in milliseconds | | Event mode | **Required** | A field to indicate whether the even
  • Network accessline 225
    | Start time | **Required** | The epoch timestamp when the event is expected to start. **Note:**This will be represented in milliseconds. | Epoch timestamp in milliseconds | | Event mode | **Required** | A field to indicate whether the even
  • Network accessline 226
    | Event mode | **Required** | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Re
  • Network accessline 226
    | Event mode | **Required** | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Re
  • Network accessline 227
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bo
  • Network accessline 227
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bo
  • Network accessline 238
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 238
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 239
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 239
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 240
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 240
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 242
    | Price - StrikethroughPrice | Optional | The original price of the ticket/pass for the event. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text
  • Network accessline 242
    | Price - StrikethroughPrice | Optional | The original price of the ticket/pass for the event. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text
  • Network accessline 244
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 244
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 248
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 248
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 249
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 249
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 250
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 250
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 251
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a b
  • Network accessline 251
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a b
  • Network accessline 252
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Imag
  • Network accessline 252
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Imag
  • Network accessline 260
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 260
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 261
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 261
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 262
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 262
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 280
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image
  • Network accessline 280
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image
  • Network accessline 281
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. | | Action Uri | **Required**
  • Network accessline 281
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. | | Action Uri | **Required**
  • Network accessline 282
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. |
  • Network accessline 282
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. |
  • Network accessline 283
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 283
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 296
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 296
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 297
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 297
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 298
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 298
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 299
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image 
  • Network accessline 299
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image 
  • Network accessline 300
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bo
  • Network accessline 300
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bo
  • Network accessline 310
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 310
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 311
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 311
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 312
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 312
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 320
    | Price - StrikethroughPrice | Optional | The original price of the tickets/entry pass for the point of interest. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text
  • Network accessline 320
    | Price - StrikethroughPrice | Optional | The original price of the tickets/entry pass for the point of interest. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text
  • Network accessline 322
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_TRAVEL_AND_LOCAL - TYPE_MOVIES_AND_TV_SHOWS (Example - theater) - TYPE_MEDICAL (Example - hospital) - TYPE_EDUCATION (Exam
  • Network accessline 322
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_TRAVEL_AND_LOCAL - TYPE_MOVIES_AND_TV_SHOWS (Example - theater) - TYPE_MEDICAL (Example - hospital) - TYPE_EDUCATION (Exam
  • Network accessline 326
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 326
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 327
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 327
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 328
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 328
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 329
    | Profile - Name | **Required** | Profile name or id or handle, eg "John Doe", "@TeamPixel", etc. | String **Recommended text size: Max 50 chars** | | Profile - Avatar | **Required** | Profile picture or avatar image of the user. **Note:**M
  • Network accessline 329
    | Profile - Name | **Required** | Profile name or id or handle, eg "John Doe", "@TeamPixel", etc. | String **Recommended text size: Max 50 chars** | | Profile - Avatar | **Required** | Profile picture or avatar image of the user. **Note:**M
  • Network accessline 330
    | Profile - Avatar | **Required** | Profile picture or avatar image of the user. **Note:**Must be Square 1:1 image. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. |
  • Network accessline 330
    | Profile - Avatar | **Required** | Profile picture or avatar image of the user. **Note:**Must be Square 1:1 image. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. |
  • Network accessline 331
    | Profile - Additional Text | Optional | Free text like the profile handle. | Free text **Recommended text size: Max 15 chars** | | Profile - Additional Image | Optional | Small image like a verified badge. | See [Image Specifications](http
  • Network accessline 331
    | Profile - Additional Text | Optional | Free text like the profile handle. | Free text **Recommended text size: Max 15 chars** | | Profile - Additional Image | Optional | Small image like a verified badge. | See [Image Specifications](http
  • Network accessline 332
    | Profile - Additional Image | Optional | Small image like a verified badge. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. |
  • Network accessline 332
    | Profile - Additional Image | Optional | Small image like a verified badge. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guidance. |
  • Network accessline 333
    | Header image | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom 
  • Network accessline 333
    | Header image | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom 
  • Network accessline 335
    | Popularity - Count Value | Optional | The number of followers or popularity value. **Note:** Provide Count Value if your app doesn't want to handle logic on how a large number should be optimized for different display sizes. If both Count
  • Network accessline 335
    | Popularity - Count Value | Optional | The number of followers or popularity value. **Note:** Provide Count Value if your app doesn't want to handle logic on how a large number should be optimized for different display sizes. If both Count
  • Network accessline 336
    | Popularity - Label | Optional | Indicate what the popularity label is. For example - "Likes". | String **Recommended text size: Max 20 chars for count + label combined** | | Popularity - Visual | Optional | Indicate what the interaction i
  • Network accessline 336
    | Popularity - Label | Optional | Indicate what the popularity label is. For example - "Likes". | String **Recommended text size: Max 20 chars for count + label combined** | | Popularity - Visual | Optional | Indicate what the interaction i
  • Network accessline 337
    | Popularity - Visual | Optional | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, though not all may not be shown on all form factors. **Note:** Must be Square 1:1 image |
  • Network accessline 337
    | Popularity - Visual | Optional | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, though not all may not be shown on all form factors. **Note:** Must be Square 1:1 image |
  • Network accessline 349
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 349
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 350
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 350
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 351
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 351
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 352
    | Description | Optional | A single paragraph of text to describe the entity. **Note:** Either description or subtitle list will be displayed to the user, not both. | Free text **Recommended text size: 180 chars** | | Subtitle list | Option
  • Network accessline 352
    | Description | Optional | A single paragraph of text to describe the entity. **Note:** Either description or subtitle list will be displayed to the user, not both. | Free text **Recommended text size: 180 chars** | | Subtitle list | Option
  • Network accessline 354
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_HEALTH_AND_FITENESS (Example - Yoga/fitness trainer) - TYPE_HOME_AND_AUTO (Example - Plumber) - TYPE_SPORTS (Example - Pla
  • Network accessline 354
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_HEALTH_AND_FITENESS (Example - Yoga/fitness trainer) - TYPE_HOME_AND_AUTO (Example - Plumber) - TYPE_SPORTS (Example - Pla
  • Network accessline 358
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 358
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 359
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 359
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 360
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 360
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 368
    | Location - Zip code | Optional | The zip code (if applicable) of the restaurant. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicable) of the restaurant. | Free tex
  • Network accessline 368
    | Location - Zip code | Optional | The zip code (if applicable) of the restaurant. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicable) of the restaurant. | Free tex
  • Network accessline 369
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the restaurant. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Rec
  • Network accessline 369
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the restaurant. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Rec
  • Network accessline 370
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guid
  • Network accessline 370
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guid
  • Network accessline 377
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 377
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 378
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 378
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 379
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 379
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 388
    | Location - Zip code | Optional | The zip code (if applicable) of the location in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicab
  • Network accessline 388
    | Location - Zip code | Optional | The zip code (if applicable) of the location in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicab
  • Network accessline 389
    | Location - Neighborhood | Optional | The neighborhood (if applicable) in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images 
  • Network accessline 389
    | Location - Neighborhood | Optional | The neighborhood (if applicable) in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images 
  • Network accessline 390
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom
  • Network accessline 390
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom
  • Network accessline 391
    | End time | Optional | The epoch timestamp when the event is expected to end. **Note:**This will be represented in milliseconds. | Epoch timestamp in milliseconds | | Service Provider - Name | Optional | The name of the service provider. *
  • Network accessline 391
    | End time | Optional | The epoch timestamp when the event is expected to end. **Note:**This will be represented in milliseconds. | Epoch timestamp in milliseconds | | Service Provider - Name | Optional | The name of the service provider. *
  • Network accessline 392
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, name of the event organizer/tour | | Service Provider - Image | Optional 
  • Network accessline 392
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, name of the event organizer/tour | | Service Provider - Image | Optional 
  • Network accessline 393
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/othervertic
  • Network accessline 393
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/othervertic
  • Network accessline 396
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 396
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 397
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 397
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 398
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 398
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 405
    | Rating - Count | Optional | The count of the ratings for the event. **Note:** Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, i
  • Network accessline 405
    | Rating - Count | Optional | The count of the ratings for the event. **Note:** Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, i
  • Network accessline 407
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 407
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 411
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 411
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 412
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 412
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 413
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 413
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 422
    | Location - Zip code | Optional | The zip code (if applicable) of the lodging. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicable) of the lodging. | Free text **Re
  • Network accessline 422
    | Location - Zip code | Optional | The zip code (if applicable) of the lodging. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicable) of the lodging. | Free text **Re
  • Network accessline 423
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the lodging. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recomm
  • Network accessline 423
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the lodging. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recomm
  • Network accessline 424
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Image Sp
  • Network accessline 424
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Image Sp
  • Network accessline 438
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 438
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 439
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 439
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 440
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 440
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 458
    | Arrival Location - Neighborhood | Optional | The neighborhood (if applicable) of the arrival location. | Free text **Recommended text size: max \~20 chars** | | Service Provider - Name | Optional | The name of the service provider. **Note
  • Network accessline 458
    | Arrival Location - Neighborhood | Optional | The neighborhood (if applicable) of the arrival location. | Free text **Recommended text size: max \~20 chars** | | Service Provider - Name | Optional | The name of the service provider. **Note
  • Network accessline 459
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, Airline name | | Service Provider - Image | Optional | The logo/image of 
  • Network accessline 459
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, Airline name | | Service Provider - Image | Optional | The logo/image of 
  • Network accessline 460
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/othervertic
  • Network accessline 460
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/othervertic
  • Network accessline 461
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guid
  • Network accessline 461
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guid
  • Network accessline 473
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 473
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 474
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 474
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 475
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 475
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 492
    | Return Address - Neighborhood | Optional | The neighborhood (if applicable) of the return location. | Free text **Recommended text size: max \~20 chars** | | Service Provider - Name | Optional | The name of the service provider. **Note:**
  • Network accessline 492
    | Return Address - Neighborhood | Optional | The neighborhood (if applicable) of the return location. | Free text **Recommended text size: max \~20 chars** | | Service Provider - Name | Optional | The name of the service provider. **Note:**
  • Network accessline 493
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, "Avis Car Rental" | | Service Provider - Image | Optional | The logo/imag
  • Network accessline 493
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, "Avis Car Rental" | | Service Provider - Image | Optional | The logo/imag
  • Network accessline 494
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/othervertic
  • Network accessline 494
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/othervertic
  • Network accessline 495
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guid
  • Network accessline 495
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/otherverticals#image-specs) for guid
  • Network accessline 561
    - TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from [Watch integration guide](https://developer.android.com/guide/playcore/engage/watch) before using the generic entities.
  • Network accessline 561
    - TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from [Watch integration guide](https://developer.android.com/guide/playcore/engage/watch) before using the generic entities.
  • Network accessline 562
    - TYPE_BOOKS - Check out the [EbookEntity](https://developer.android.com/guide/playcore/engage/read#ebookentity) before using the generic entities.
  • Network accessline 562
    - TYPE_BOOKS - Check out the [EbookEntity](https://developer.android.com/guide/playcore/engage/read#ebookentity) before using the generic entities.
  • Network accessline 563
    - TYPE_AUDIOBOOKS - Check out [AudiobookEntity](https://developer.android.com/guide/playcore/engage/read#audiobookentity) before using the generic entities.
  • Network accessline 563
    - TYPE_AUDIOBOOKS - Check out [AudiobookEntity](https://developer.android.com/guide/playcore/engage/read#audiobookentity) before using the generic entities.
  • Network accessline 564
    - TYPE_SHOPPING - Check out [ShoppingEntity](https://developer.android.com/guide/playcore/engage/shopping#shoppingEntity) before using the generic entities.
  • Network accessline 564
    - TYPE_SHOPPING - Check out [ShoppingEntity](https://developer.android.com/guide/playcore/engage/shopping#shoppingEntity) before using the generic entities.
  • Network accessline 565
    - TYPE_FOOD_AND_DRINK - Check out entities from [Food Integration guide](https://developer.android.com/guide/playcore/engage/food) before using the generic entities.
  • Network accessline 565
    - TYPE_FOOD_AND_DRINK - Check out entities from [Food Integration guide](https://developer.android.com/guide/playcore/engage/food) before using the generic entities.
  • Network accessline 575
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 575
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 576
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 576
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 606
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 606
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 610
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 610
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 885
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 885
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 886
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 886
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 887
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 887
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 890
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 890
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 891
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 891
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 892
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 892
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 904
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 904
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 905
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 905
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 906
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 906
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 909
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 909
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 910
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 910
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 911
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 911
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 1172
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1172
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1173
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 1173
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 1174
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1174
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1281
    The following [intents](https://developer.android.com/reference/android/content/Intent) is sent by the
  • Network accessline 1281
    The following [intents](https://developer.android.com/reference/android/content/Intent) is sent by the
  • Network accessline 1290
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1290
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1291
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1291
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1295
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for
  • Network accessline 1295
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for

play/engage-sdk-integration/references/android/guide/playcore/engage/read.md

  • Network accessline 5
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 5
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 6
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 6
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 7
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 7
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 8
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 8
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 9
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 9
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 11
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 11
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 44
    > [!NOTE] > **Note:** Play Store eligibility aligns with the supported categories for [Play Premium Growth Tools](https://play.google.com/console/about/guides/premium-growth-tools/). If your news app has additional forms of content not list
  • Network accessline 44
    > [!NOTE] > **Note:** Play Store eligibility aligns with the supported categories for [Play Premium Growth Tools](https://play.google.com/console/about/guides/premium-growth-tools/). If your news app has additional forms of content not list
  • Network accessline 45
    > **Note:** Play Store eligibility aligns with the supported categories for [Play Premium Growth Tools](https://play.google.com/console/about/guides/premium-growth-tools/). If your news app has additional forms of content not listed in the 
  • Network accessline 45
    > **Note:** Play Store eligibility aligns with the supported categories for [Play Premium Growth Tools](https://play.google.com/console/about/guides/premium-growth-tools/). If your news app has additional forms of content not listed in the 
  • Network accessline 50
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 50
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 54
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 54
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 77
    ![](https://developer.android.com/static/images/guide/playcore/engage/read-term-1.png) **Figure 1.** Entertainment Space UI showing a Recommendation Cluster from a single partner.
  • Network accessline 77
    ![](https://developer.android.com/static/images/guide/playcore/engage/read-term-1.png) **Figure 1.** Entertainment Space UI showing a Recommendation Cluster from a single partner.
  • Network accessline 78
    - **Entity:** An object representing a single item in a cluster. An entity     can be an ebook, an audio book, a book series, and more. See the [Provide     entity data](https://developer.android.com/guide/playcore/engage/read#provide-entit
  • Network accessline 78
    - **Entity:** An object representing a single item in a cluster. An entity     can be an ebook, an audio book, a book series, and more. See the [Provide     entity data](https://developer.android.com/guide/playcore/engage/read#provide-entit
  • Network accessline 79
    can be an ebook, an audio book, a book series, and more. See the [Provide     entity data](https://developer.android.com/guide/playcore/engage/read#provide-entity-data) section for a list of supported entity     types.
  • Network accessline 79
    can be an ebook, an audio book, a book series, and more. See the [Provide     entity data](https://developer.android.com/guide/playcore/engage/read#provide-entity-data) section for a list of supported entity     types.
  • Network accessline 80
    entity data](https://developer.android.com/guide/playcore/engage/read#provide-entity-data) section for a list of supported entity
  • Network accessline 80
    entity data](https://developer.android.com/guide/playcore/engage/read#provide-entity-data) section for a list of supported entity
  • Network accessline 83
    ![](https://developer.android.com/static/images/guide/playcore/engage/read-term-2.png) **Figure 2.** Entertainment Space UI showing a single Entity within a single partner's Recommendation Cluster.
  • Network accessline 83
    ![](https://developer.android.com/static/images/guide/playcore/engage/read-term-2.png) **Figure 2.** Entertainment Space UI showing a single Entity within a single partner's Recommendation Cluster.
  • Network accessline 88
    ![](https://developer.android.com/static/images/guide/playcore/engage/read-term-3.png) **Figure 3.** Entertainment Space UI showing a Continuation cluster with unfinished recommendations from multiple partners (only one recommendation is cu
  • Network accessline 88
    ![](https://developer.android.com/static/images/guide/playcore/engage/read-term-3.png) **Figure 3.** Entertainment Space UI showing a Continuation cluster with unfinished recommendations from multiple partners (only one recommendation is cu
  • Network accessline 95
    ![](https://developer.android.com/static/images/guide/playcore/engage/read-term-4.png) **Figure 4.** Entertainment Space UI showing a Featured cluster with recommendations from multiple partners (only one recommendation is currently visible
  • Network accessline 95
    ![](https://developer.android.com/static/images/guide/playcore/engage/read-term-4.png) **Figure 4.** Entertainment Space UI showing a Featured cluster with recommendations from multiple partners (only one recommendation is currently visible
  • Network accessline 110
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 110
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 111
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 111
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 140
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 140
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 141
    | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. | | Author | **Required** | At 
  • Network accessline 141
    | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. | | Author | **Required** | At 
  • Network accessline 142
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 142
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 143
    | Author | **Required** | At least one author name must be provided. | | Action link uri | **Required** | The deep link to the provider app for the ebook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.a
  • Network accessline 143
    | Author | **Required** | At least one author name must be provided. | | Action link uri | **Required** | The deep link to the provider app for the ebook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.a
  • Network accessline 144
    | Action link uri | **Required** | The deep link to the provider app for the ebook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 144
    | Action link uri | **Required** | The deep link to the provider app for the ebook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 165
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 165
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 166
    | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. | | Author | **Required** | At 
  • Network accessline 166
    | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. | | Author | **Required** | At 
  • Network accessline 167
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 167
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 168
    | Author | **Required** | At least one author name must be provided. | | Action link uri | **Required** | The deep link to the provider app for the audiobook. Note: You can use deep links for attribution. [Refer to this FAQ](https://develop
  • Network accessline 168
    | Author | **Required** | At least one author name must be provided. | | Action link uri | **Required** | The deep link to the provider app for the audiobook. Note: You can use deep links for attribution. [Refer to this FAQ](https://develop
  • Network accessline 169
    | Action link uri | **Required** | The deep link to the provider app for the audiobook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 169
    | Action link uri | **Required** | The deep link to the provider app for the audiobook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 191
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 191
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 192
    | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. | | Author | **Required** | At 
  • Network accessline 192
    | Name | **Required** |   | | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. | | Author | **Required** | At 
  • Network accessline 193
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 193
    | Poster images | **Required** | At least one image must be provided. See [Image Specifications](https://developer.android.com/guide/playcore/engage/read#image-specs) for guidance. |
  • Network accessline 194
    | Author | **Required** | At least one author name must be present. | | Action link uri | **Required** | The deep link to the provider app for the audiobook or ebook. Note: You can use deep links for attribution. [Refer to this FAQ](https:/
  • Network accessline 194
    | Author | **Required** | At least one author name must be present. | | Action link uri | **Required** | The deep link to the provider app for the audiobook or ebook. Note: You can use deep links for attribution. [Refer to this FAQ](https:/
  • Network accessline 195
    | Action link uri | **Required** | The deep link to the provider app for the audiobook or ebook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution
  • Network accessline 195
    | Action link uri | **Required** | The deep link to the provider app for the audiobook or ebook. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution
  • Network accessline 233
    .addPosterImage(                           new Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 233
    .addPosterImage(                           new Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 234
    new Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))                               .setImageHeightInPixel(960)
  • Network accessline 234
    new Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))                               .setImageHeightInPixel(960)
  • Network accessline 235
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 235
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 239
    .addAuthor("Michelle Obama")                 .addNarrator("Michelle Obama")                 .setActionLinkUri(Uri.parse("https://play.google/audiobooks/1"))
  • Network accessline 239
    .addAuthor("Michelle Obama")                 .addNarrator("Michelle Obama")                 .setActionLinkUri(Uri.parse("https://play.google/audiobooks/1"))
  • Network accessline 240
    .addNarrator("Michelle Obama")                 .setActionLinkUri(Uri.parse("https://play.google/audiobooks/1"))                 .setDurationMillis(16335L)
  • Network accessline 240
    .addNarrator("Michelle Obama")                 .setActionLinkUri(Uri.parse("https://play.google/audiobooks/1"))                 .setDurationMillis(16335L)
  • Network accessline 241
    .setActionLinkUri(Uri.parse("https://play.google/audiobooks/1"))
  • Network accessline 241
    .setActionLinkUri(Uri.parse("https://play.google/audiobooks/1"))
  • Network accessline 251
    It's recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 251
    It's recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 252
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 252
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 281
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 281
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 285
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 285
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 546
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 546
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 547
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 547
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 548
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 548
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 551
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 551
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 552
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 552
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 553
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 553
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 565
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 565
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 566
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 566
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 567
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 567
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 570
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 570
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 571
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 571
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 572
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 572
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 812
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 812
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 813
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 813
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 814
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 814
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 922
    The following [intents](https://developer.android.com/reference/android/content/Intent) will be sent by the
  • Network accessline 922
    The following [intents](https://developer.android.com/reference/android/content/Intent) will be sent by the
  • Network accessline 931
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 931
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 932
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 932
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 936
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for
  • Network accessline 936
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for

play/engage-sdk-integration/references/android/guide/playcore/engage/shopping.md

  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 26
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 26
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 30
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 30
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 121
    For more information, see [Package visibility in Android 11](https://developer.android.com/about/versions/11/privacy/package-visibility).
  • Network accessline 121
    For more information, see [Package visibility in Android 11](https://developer.android.com/about/versions/11/privacy/package-visibility).
  • Network accessline 122
    11](https://developer.android.com/about/versions/11/privacy/package-visibility).
  • Network accessline 122
    11](https://developer.android.com/about/versions/11/privacy/package-visibility).
  • Network accessline 126
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 126
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 127
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 127
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 162
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/shopping#image-specs
  • Network accessline 162
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/shopping#image-specs
  • Network accessline 163
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/shopping#image-specs) for guidance. | | Action Uri | **Required** | The
  • Network accessline 163
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/shopping#image-specs) for guidance. | | Action Uri | **Required** | The
  • Network accessline 164
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/shopping#image-specs) for guidance. |
  • Network accessline 164
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/shopping#image-specs) for guidance. |
  • Network accessline 165
    | Action Uri | **Required** | The deep link to the page in the app displaying details about the entity. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attr
  • Network accessline 165
    | Action Uri | **Required** | The deep link to the page in the app displaying details about the entity. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attr
  • Network accessline 182
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 182
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 183
    |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 183
    |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 184
    | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 184
    | Action Uri | **Required** | The deep link to the shopping cart in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 186
    | Action Text | Optional | The call to action text of the button on the Shopping Cart (for example, *Your Shopping Bag*). **If no action text is provided by the developer, *View Cart* is the default.** This attribute is supported in version
  • Network accessline 186
    | Action Text | Optional | The call to action text of the button on the Shopping Cart (for example, *Your Shopping Bag*). **If no action text is provided by the developer, *View Cart* is the default.** This attribute is supported in version
  • Network accessline 187
    | Title | Optional | The title of the cart (for example, *Your Shopping Bag*). **If no title is provided by the developer, *Your cart* is the default.** **If developer partner publishes a separate cart per merchant, please include *merchant
  • Network accessline 187
    | Title | Optional | The title of the cart (for example, *Your Shopping Bag*). **If no title is provided by the developer, *Your cart* is the default.** **If developer partner publishes a separate cart per merchant, please include *merchant
  • Network accessline 188
    | Cart images | Optional | Images of each product in the cart. **Up to 10 images can be provided in order of priority; the actual number of images displayed depends on the device form factor.** | See [Image Specifications](https://developer
  • Network accessline 188
    | Cart images | Optional | Images of each product in the cart. **Up to 10 images can be provided in order of priority; the actual number of images displayed depends on the device form factor.** | See [Image Specifications](https://developer
  • Network accessline 197
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 197
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.
  • Network accessline 198
    |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 198
    |---|---|---|---| | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 199
    | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 199
    | Action Uri | **Required** | The deep link to the shopping list in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 207
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.co
  • Network accessline 207
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.co
  • Network accessline 208
    |---|---|---|---| | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) 
  • Network accessline 208
    |---|---|---|---| | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) 
  • Network accessline 209
    | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 209
    | Action Uri | **Required** | The deep link to reorder in the partner's app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 212
    | Title | **Required** | The title of the reorder item. | Free text **Recommended text size: under 40 chars** (Text that is too long may show ellipses) | | Item labels | Optional (If not provided, poster images should be provided) | The lis
  • Network accessline 212
    | Title | **Required** | The title of the reorder item. | Free text **Recommended text size: under 40 chars** (Text that is too long may show ellipses) | | Item labels | Optional (If not provided, poster images should be provided) | The lis
  • Network accessline 214
    | Poster images | Optional (If not provided, item labels should be provided) | Images of the items in the previous order. **Up to 10 images can be provided in order of priority; the actual number of images displayed depends on the device fo
  • Network accessline 214
    | Poster images | Optional (If not provided, item labels should be provided) | Images of the items in the previous order. **Up to 10 images can be provided in order of priority; the actual number of images displayed depends on the device fo
  • Network accessline 226
    | OrderDeliveryTimeWindow - Start Time | Optional | The epoch timestamp in milliseconds on/after which the order will be delivered or be ready for pickup. | Epoch timestamp in milliseconds | | OrderDeliveryTimeWindow - End Time | Optional |
  • Network accessline 226
    | OrderDeliveryTimeWindow - Start Time | Optional | The epoch timestamp in milliseconds on/after which the order will be delivered or be ready for pickup. | Epoch timestamp in milliseconds | | OrderDeliveryTimeWindow - End Time | Optional |
  • Network accessline 227
    | OrderDeliveryTimeWindow - End Time | Optional | The epoch timestamp in milliseconds on/before which the order will be delivered or be ready for pickup. | Epoch timestamp in milliseconds | | Poster images | Optional | Image of one item/pro
  • Network accessline 227
    | OrderDeliveryTimeWindow - End Time | Optional | The epoch timestamp in milliseconds on/before which the order will be delivered or be ready for pickup. | Epoch timestamp in milliseconds | | Poster images | Optional | Image of one item/pro
  • Network accessline 228
    | Poster images | Optional | Image of one item/product that is part of the order. Recommended aspect ratio is 1:1 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/shopping#image-specs) for guidance. |
  • Network accessline 228
    | Poster images | Optional | Image of one item/product that is part of the order. Recommended aspect ratio is 1:1 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/shopping#image-specs) for guidance. |
  • Network accessline 261
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 261
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 262
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 262
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 298
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 298
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 302
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 302
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 440
    | Title | **Required** | The title for the Recommendation Cluster. **Recommended text size: under 25 chars** (Text that is too long may show ellipses) | | Subtitle | Optional | The subtitle for the Recommendation Cluster. | | Action Uri | O
  • Network accessline 440
    | Title | **Required** | The title for the Recommendation Cluster. **Recommended text size: under 25 chars** (Text that is too long may show ellipses) | | Subtitle | Optional | The subtitle for the Recommendation Cluster. | | Action Uri | O
  • Network accessline 442
    | Action Uri | Optional | The deep link to the page in the partner app where users can see the complete list of recommendations. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/
  • Network accessline 442
    | Action Uri | Optional | The deep link to the page in the partner app where users can see the complete list of recommendations. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/
  • Network accessline 685
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 685
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 686
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 686
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 687
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 687
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 690
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 690
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 691
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 691
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 692
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 692
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 704
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 704
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 705
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 705
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 706
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 706
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 709
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 709
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 710
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 710
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 711
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 711
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 1039
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1039
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1040
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 1040
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 1041
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1041
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1210
    The following [intents](https://developer.android.com/reference/android/content/Intent) are sent by the
  • Network accessline 1210
    The following [intents](https://developer.android.com/reference/android/content/Intent) are sent by the
  • Network accessline 1222
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1222
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1223
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1223
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1227
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for
  • Network accessline 1227
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for

play/engage-sdk-integration/references/android/guide/playcore/engage/social.md

  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 26
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 26
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 30
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 30
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 100
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 100
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 101
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 101
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 123
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action URI | **Required** for all surfaces other than Google TV | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to th
  • Network accessline 123
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action URI | **Required** for all surfaces other than Google TV | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to th
  • Network accessline 124
    |---|---|---|---| | Action URI | **Required** for all surfaces other than Google TV | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcor
  • Network accessline 124
    |---|---|---|---| | Action URI | **Required** for all surfaces other than Google TV | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcor
  • Network accessline 125
    | Action URI | **Required** for all surfaces other than Google TV | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deepl
  • Network accessline 125
    | Action URI | **Required** for all surfaces other than Google TV | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deepl
  • Network accessline 128
    | Comments Summary | Optional | Summary of comments for the post. | String | | **Post related metadata (Required)** |||| | Image(s) | Required | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple ima
  • Network accessline 128
    | Comments Summary | Optional | Summary of comments for the post. | String | | **Post related metadata (Required)** |||| | Image(s) | Required | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple ima
  • Network accessline 129
    | **Post related metadata (Required)** |||| | Image(s) | Required | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple images are provided. However, the UI may provide visual indication that there ar
  • Network accessline 129
    | **Post related metadata (Required)** |||| | Image(s) | Required | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple images are provided. However, the UI may provide visual indication that there ar
  • Network accessline 130
    | Image(s) | Required | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple images are provided. However, the UI may provide visual indication that there are more images in the app. *If the post is a 
  • Network accessline 130
    | Image(s) | Required | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple images are provided. However, the UI may provide visual indication that there are more images in the app. *If the post is a 
  • Network accessline 135
    | **Profile related metadata (Optional)** |||| | Name | Required | Profile name or id or handle, eg "John Doe", "@TeamPixel" | String(recommended max 25 chars) | | Avatar | Required | Profile picture or avatar image of the user. **Square 1:
  • Network accessline 135
    | **Profile related metadata (Optional)** |||| | Name | Required | Profile name or id or handle, eg "John Doe", "@TeamPixel" | String(recommended max 25 chars) | | Avatar | Required | Profile picture or avatar image of the user. **Square 1:
  • Network accessline 136
    | Name | Required | Profile name or id or handle, eg "John Doe", "@TeamPixel" | String(recommended max 25 chars) | | Avatar | Required | Profile picture or avatar image of the user. **Square 1:1 image** | See [Image Specifications](https://
  • Network accessline 136
    | Name | Required | Profile name or id or handle, eg "John Doe", "@TeamPixel" | String(recommended max 25 chars) | | Avatar | Required | Profile picture or avatar image of the user. **Square 1:1 image** | See [Image Specifications](https://
  • Network accessline 137
    | Avatar | Required | Profile picture or avatar image of the user. **Square 1:1 image** | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 137
    | Avatar | Required | Profile picture or avatar image of the user. **Square 1:1 image** | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 138
    | Additional Image | Optional | Profile badge. for example - verified badge **Square 1:1 image** | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 138
    | Additional Image | Optional | Profile badge. for example - verified badge **Square 1:1 image** | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 142
    | Count Value | Optional | The number of interactions as a value. **Note:** Provide Count Value instead of Count if your app doesn't handle logic on how a large number should be optimized for different display sizes. If both Count and Count
  • Network accessline 142
    | Count Value | Optional | The number of interactions as a value. **Note:** Provide Count Value instead of Count if your app doesn't handle logic on how a large number should be optimized for different display sizes. If both Count and Count
  • Network accessline 143
    | Label | Optional | Indicate what the interaction label is for. For example - "Likes". | String | | Visual | Optional | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, tho
  • Network accessline 143
    | Label | Optional | Indicate what the interaction label is for. For example - "Likes". | String | | Visual | Optional | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, tho
  • Network accessline 144
    | Visual | Optional | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, though not all may not be shown on all form factors. **Note:** Must be Square 1:1 image | See [Image S
  • Network accessline 144
    | Visual | Optional | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, though not all may not be shown on all form factors. **Note:** Must be Square 1:1 image | See [Image S
  • Network accessline 151
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action URI | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 151
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action URI | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 152
    |---|---|---|---| | Action URI | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 152
    |---|---|---|---| | Action URI | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 153
    | Action URI | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | URI |
  • Network accessline 153
    | Action URI | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | URI |
  • Network accessline 156
    | Comments Summary | Optional | Summary of comments for the post. | String | | **Post related metadata (Required)** At least one of TextContent, Image or WebContent is required |||| | Image(s) | Optional | Image(s) should be in **portrait a
  • Network accessline 156
    | Comments Summary | Optional | Summary of comments for the post. | String | | **Post related metadata (Required)** At least one of TextContent, Image or WebContent is required |||| | Image(s) | Optional | Image(s) should be in **portrait a
  • Network accessline 157
    | **Post related metadata (Required)** At least one of TextContent, Image or WebContent is required |||| | Image(s) | Optional | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple images are provided
  • Network accessline 157
    | **Post related metadata (Required)** At least one of TextContent, Image or WebContent is required |||| | Image(s) | Optional | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple images are provided
  • Network accessline 158
    | Image(s) | Optional | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple images are provided. However, the UI may provide visual indication that there are more images in the app. *If the post is a 
  • Network accessline 158
    | Image(s) | Optional | Image(s) should be in **portrait aspect ratio.** The UI may show only 1 image when multiple images are provided. However, the UI may provide visual indication that there are more images in the app. *If the post is a 
  • Network accessline 160
    | **Video Content (Optional)** |||| | Duration | Required | The duration of the video in milliseconds. | Long | | Image | Required | Preview image of the video content. | See [Image Specifications](https://developer.android.com/guide/playco
  • Network accessline 160
    | **Video Content (Optional)** |||| | Duration | Required | The duration of the video in milliseconds. | Long | | Image | Required | Preview image of the video content. | See [Image Specifications](https://developer.android.com/guide/playco
  • Network accessline 161
    | Duration | Required | The duration of the video in milliseconds. | Long | | Image | Required | Preview image of the video content. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for gu
  • Network accessline 161
    | Duration | Required | The duration of the video in milliseconds. | Long | | Image | Required | Preview image of the video content. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for gu
  • Network accessline 162
    | Image | Required | Preview image of the video content. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 162
    | Image | Required | Preview image of the video content. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 164
    | Link Preview - Title | Required | Text to indicate the title of the web page content | String | | Link Preview - Hostname | Required | Text to indicate the web page owner, eg "INSIDER" | String | | Link Preview - Image | Optional | Hero i
  • Network accessline 164
    | Link Preview - Title | Required | Text to indicate the title of the web page content | String | | Link Preview - Hostname | Required | Text to indicate the web page owner, eg "INSIDER" | String | | Link Preview - Image | Optional | Hero i
  • Network accessline 165
    | Link Preview - Hostname | Required | Text to indicate the web page owner, eg "INSIDER" | String | | Link Preview - Image | Optional | Hero image for the web content | See [Image Specifications](https://developer.android.com/guide/playcore
  • Network accessline 165
    | Link Preview - Hostname | Required | Text to indicate the web page owner, eg "INSIDER" | String | | Link Preview - Image | Optional | Hero image for the web content | See [Image Specifications](https://developer.android.com/guide/playcore
  • Network accessline 166
    | Link Preview - Image | Optional | Hero image for the web content | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 166
    | Link Preview - Image | Optional | Hero image for the web content | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 169
    | Name | Required | Profile name or id or handle, eg "John Doe", "@TeamPixel." | String(recommended max 25 chars) | | Additional Text | Optional | Could be used as profile id or handle or additional metadata For example "@John-Doe", "5M fol
  • Network accessline 169
    | Name | Required | Profile name or id or handle, eg "John Doe", "@TeamPixel." | String(recommended max 25 chars) | | Additional Text | Optional | Could be used as profile id or handle or additional metadata For example "@John-Doe", "5M fol
  • Network accessline 170
    | Additional Text | Optional | Could be used as profile id or handle or additional metadata For example "@John-Doe", "5M followers", "You might like", "Trending", "5 new posts" | String(recommended max 40 chars) | | Avatar | Required | Prof
  • Network accessline 170
    | Additional Text | Optional | Could be used as profile id or handle or additional metadata For example "@John-Doe", "5M followers", "You might like", "Trending", "5 new posts" | String(recommended max 40 chars) | | Avatar | Required | Prof
  • Network accessline 171
    | Avatar | Required | Profile picture or avatar image of the user. **Square 1:1 image** | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 171
    | Avatar | Required | Profile picture or avatar image of the user. **Square 1:1 image** | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 172
    | Additional Image | Optional | Profile badge, for example - verified badge **Square 1:1 image** | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 172
    | Additional Image | Optional | Profile badge, for example - verified badge **Square 1:1 image** | See [Image Specifications](https://developer.android.com/guide/playcore/engage/social#image-specs) for guidance. |
  • Network accessline 175
    | CountWithOptionalLabel | Required | Indicate the number of interactions with an optional label, for example - "3.7 M Likes." **Note:** Partners should use either **Count** or **CountWithOptionalLabel**. | String | | Label | Optional If no
  • Network accessline 175
    | CountWithOptionalLabel | Required | Indicate the number of interactions with an optional label, for example - "3.7 M Likes." **Note:** Partners should use either **Count** or **CountWithOptionalLabel**. | String | | Label | Optional If no
  • Network accessline 176
    | Label | Optional If not provided, **Visual** must be provided. | Indicate what the interaction is for. For example - "Likes." | String (recommended max 20 chars for count + label combined) | | Visual | Optional If not provided, **Label** 
  • Network accessline 176
    | Label | Optional If not provided, **Visual** must be provided. | Indicate what the interaction is for. For example - "Likes." | String (recommended max 20 chars for count + label combined) | | Visual | Optional If not provided, **Label** 
  • Network accessline 177
    | Visual | Optional If not provided, **Label** must be provided. | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, though not all may not be shown on all form factors. **Sq
  • Network accessline 177
    | Visual | Optional If not provided, **Label** must be provided. | Indicate what the interaction is for. For example - Image showing Likes icon, emoji. Can provide more than 1 image, though not all may not be shown on all form factors. **Sq
  • Network accessline 202
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 202
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 203
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 203
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 229
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 229
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 233
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 233
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 362
    | Title | **Required** | The title for the Recommendation Cluster (for example, *Latest from your friends*). **Recommended text size: under 25 chars** (Text that is too long may show ellipses) | | Subtitle | Optional | The subtitle for the 
  • Network accessline 362
    | Title | **Required** | The title for the Recommendation Cluster (for example, *Latest from your friends*). **Recommended text size: under 25 chars** (Text that is too long may show ellipses) | | Subtitle | Optional | The subtitle for the 
  • Network accessline 364
    | Action Uri | Optional | The deep link to the page in the partner app where users can see the complete list of recommendations. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/
  • Network accessline 364
    | Action Uri | Optional | The deep link to the page in the partner app where users can see the complete list of recommendations. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/
  • Network accessline 428
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 428
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 429
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 429
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 430
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 430
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 433
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 433
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 434
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 434
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 435
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 435
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 447
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 447
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 448
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 448
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 449
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 449
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 452
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 452
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 453
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 453
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 454
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 454
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 642
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 642
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 643
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 643
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 644
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 644
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 713
    The following [intents](https://developer.android.com/reference/android/content/Intent) will be sent by the
  • Network accessline 713
    The following [intents](https://developer.android.com/reference/android/content/Intent) will be sent by the
  • Network accessline 720
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 720
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 721
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 721
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 725
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for
  • Network accessline 725
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for

play/engage-sdk-integration/references/android/guide/playcore/engage/travel.md

  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 2
    to deliver personalized recommendations and continuation content directly to users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 3
    users across multiple on-device surfaces, like **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/entertainm
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 4
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 5
    Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The integration adds
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 6
    less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 8
    site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 26
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 26
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 30
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 30
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 66
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-travel.png) **Figure 1:** UI showing a single ArticleEntity within Recommendations cluster.
  • Network accessline 66
    ![](https://developer.android.com/static/images/guide/playcore/engage/article-entity-travel.png) **Figure 1:** UI showing a single ArticleEntity within Recommendations cluster.
  • Network accessline 71
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-entity-travel.png) **Figure 2:** UI showing a single EventEntity within Recommendations cluster.
  • Network accessline 71
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-entity-travel.png) **Figure 2:** UI showing a single EventEntity within Recommendations cluster.
  • Network accessline 76
    ![](https://developer.android.com/static/images/guide/playcore/engage/lodging-entity-travel.png) **Figure 3:** UI showing a single LodgingEntity within Recommendations cluster.
  • Network accessline 76
    ![](https://developer.android.com/static/images/guide/playcore/engage/lodging-entity-travel.png) **Figure 3:** UI showing a single LodgingEntity within Recommendations cluster.
  • Network accessline 82
    ![](https://developer.android.com/static/images/guide/playcore/engage/store-entity-travel.png) **Figure 4:** UI showing a single StoreEntity within Recommendations cluster.
  • Network accessline 82
    ![](https://developer.android.com/static/images/guide/playcore/engage/store-entity-travel.png) **Figure 4:** UI showing a single StoreEntity within Recommendations cluster.
  • Network accessline 90
    ![](https://developer.android.com/static/images/guide/playcore/engage/poi-entity-travel.png) **Figure 5:** UI showing a single PointOfInterestEntity within Recommendations cluster.
  • Network accessline 90
    ![](https://developer.android.com/static/images/guide/playcore/engage/poi-entity-travel.png) **Figure 5:** UI showing a single PointOfInterestEntity within Recommendations cluster.
  • Network accessline 101
    ![](https://developer.android.com/static/images/guide/playcore/engage/restaurant-reservation-entity-travel.png) **Figure 6.** UI showing a single RestaurantReservationEntity within a Reservation cluster.
  • Network accessline 101
    ![](https://developer.android.com/static/images/guide/playcore/engage/restaurant-reservation-entity-travel.png) **Figure 6.** UI showing a single RestaurantReservationEntity within a Reservation cluster.
  • Network accessline 114
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-reservation-entity-travel.png) **Figure 7.** UI showing a single EventReservationEntity within a Reservation cluster.
  • Network accessline 114
    ![](https://developer.android.com/static/images/guide/playcore/engage/event-reservation-entity-travel.png) **Figure 7.** UI showing a single EventReservationEntity within a Reservation cluster.
  • Network accessline 119
    ![](https://developer.android.com/static/images/guide/playcore/engage/lodging-reservation-entity-travel.png) **Figure 8.** UI showing a single LodgingReservationEntity within a Reservation cluster.
  • Network accessline 119
    ![](https://developer.android.com/static/images/guide/playcore/engage/lodging-reservation-entity-travel.png) **Figure 8.** UI showing a single LodgingReservationEntity within a Reservation cluster.
  • Network accessline 125
    ![](https://developer.android.com/static/images/guide/playcore/engage/transportation-reservation-entity-travel.png) **Figure 9.** UI showing a single TransportationReservationEntity within a Reservation cluster.
  • Network accessline 125
    ![](https://developer.android.com/static/images/guide/playcore/engage/transportation-reservation-entity-travel.png) **Figure 9.** UI showing a single TransportationReservationEntity within a Reservation cluster.
  • Network accessline 130
    ![](https://developer.android.com/static/images/guide/playcore/engage/vehicle-rental-reservation-entity-travel.png) **Figure 10.** UI showing a single VehicleRentalReservationEntity within a Reservation cluster.
  • Network accessline 130
    ![](https://developer.android.com/static/images/guide/playcore/engage/vehicle-rental-reservation-entity-travel.png) **Figure 10.** UI showing a single VehicleRentalReservationEntity within a Reservation cluster.
  • Network accessline 142
    ![](https://developer.android.com/static/images/guide/playcore/engage/featured-cluster-travel.png) **Figure 11:** UI showing a FeaturedCluster with a list of GenericFeaturedEntity
  • Network accessline 142
    ![](https://developer.android.com/static/images/guide/playcore/engage/featured-cluster-travel.png) **Figure 11:** UI showing a FeaturedCluster with a list of GenericFeaturedEntity
  • Network accessline 165
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 165
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 166
    [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 166
    [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 200
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 200
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 201
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 201
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 202
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 202
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 203
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Imag
  • Network accessline 203
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Imag
  • Network accessline 207
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, For example, as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Option
  • Network accessline 207
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, For example, as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Option
  • Network accessline 208
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 208
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 209
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 209
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 210
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/travel#content-category) for guidance. |
  • Network accessline 210
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/travel#content-category) for guidance. |
  • Network accessline 217
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 217
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 218
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 218
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 219
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 219
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 220
    | Title | **Required** | Title of the entity. | Free text **Recommended text size: Max 50 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image i
  • Network accessline 220
    | Title | **Required** | Title of the entity. | Free text **Recommended text size: Max 50 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image i
  • Network accessline 221
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom
  • Network accessline 221
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom
  • Network accessline 222
    | Source - Title | Optional | The name of the author, organization, or reporter | Free text **Recommended text size: Under 25 chars** | | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [
  • Network accessline 222
    | Source - Title | Optional | The name of the author, organization, or reporter | Free text **Recommended text size: Under 25 chars** | | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [
  • Network accessline 223
    | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 223
    | Source - Image | Optional | An image of the source like the author, the organization, reporter | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 226
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example, as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Option
  • Network accessline 226
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. Special UX treatment on top of image/video, for example, as badge overlay on the image - "Live update" - Article read duration |   | | Badge - Text | Option
  • Network accessline 227
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 227
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 228
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 228
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 230
    | Last Engagement Time | Optional | The epoch timestamp in milliseconds when the user interacted with this entity last time. | Epoch timestamp in milliseconds | | Progress Percentage | Optional | The percentage of the full content consumed 
  • Network accessline 230
    | Last Engagement Time | Optional | The epoch timestamp in milliseconds when the user interacted with this entity last time. | Epoch timestamp in milliseconds | | Progress Percentage | Optional | The percentage of the full content consumed 
  • Network accessline 231
    | Progress Percentage | Optional | The percentage of the full content consumed by the user to date. | An int value between 0\~100 inclusive. | | Content Categories | Optional | Describe the category of the content in the entity. | List of E
  • Network accessline 231
    | Progress Percentage | Optional | The percentage of the full content consumed by the user to date. | An int value between 0\~100 inclusive. | | Content Categories | Optional | Describe the category of the content in the entity. | List of E
  • Network accessline 232
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/travel#content-category) for guidance. |
  • Network accessline 232
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Enums See the [Content Category section](https://developer.android.com/guide/playcore/engage/travel#content-category) for guidance. |
  • Network accessline 239
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 239
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 240
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 240
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 241
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 241
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 242
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Localized Start time - Timestamp | **Required** | The epoch timestamp when the event is expected to start. | Joda-Time Instant | | Localized 
  • Network accessline 242
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Localized Start time - Timestamp | **Required** | The epoch timestamp when the event is expected to start. | Joda-Time Instant | | Localized 
  • Network accessline 243
    | Localized Start time - Timestamp | **Required** | The epoch timestamp when the event is expected to start. | Joda-Time Instant | | Localized Start time - Timezone | **Required** | The timezone in which the event is expected to start. | Jo
  • Network accessline 243
    | Localized Start time - Timestamp | **Required** | The epoch timestamp when the event is expected to start. | Joda-Time Instant | | Localized Start time - Timezone | **Required** | The timezone in which the event is expected to start. | Jo
  • Network accessline 244
    | Localized Start time - Timezone | **Required** | The timezone in which the event is expected to start. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidanc
  • Network accessline 244
    | Localized Start time - Timezone | **Required** | The timezone in which the event is expected to start. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidanc
  • Network accessline 245
    | Event mode | **Required** | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Re
  • Network accessline 245
    | Event mode | **Required** | A field to indicate whether the event will be virtual, in-person or both. | Enum: VIRTUAL, IN_PERSON, or HYBRID | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Re
  • Network accessline 246
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bo
  • Network accessline 246
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bo
  • Network accessline 257
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 257
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 258
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 258
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 259
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 259
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 261
    | Price - StrikethroughPrice | Optional | The original price of the ticket/pass for the event. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text
  • Network accessline 261
    | Price - StrikethroughPrice | Optional | The original price of the ticket/pass for the event. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text
  • Network accessline 262
    | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text size: under 45 chars (Text that is too long may show ellipses)** | | Content Categories | Optional | Describ
  • Network accessline 262
    | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text size: under 45 chars (Text that is too long may show ellipses)** | | Content Categories | Optional | Describ
  • Network accessline 263
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 263
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 270
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 270
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 271
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 271
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 272
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 272
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 273
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a b
  • Network accessline 273
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a b
  • Network accessline 274
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Imag
  • Network accessline 274
    | Poster images | **Required** | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Imag
  • Network accessline 282
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 282
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 283
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 283
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 284
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 284
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 286
    | Subtitle list | Optional | Up to 3 subtitles, with each subtitle a single line of text. **Note:** Either description or subtitle list will be displayed to the user, not both. | Free text **Recommended text size for each subtitle: max 50 c
  • Network accessline 286
    | Subtitle list | Optional | Up to 3 subtitles, with each subtitle a single line of text. **Note:** Either description or subtitle list will be displayed to the user, not both. | Free text **Recommended text size for each subtitle: max 50 c
  • Network accessline 287
    | AvailabilityTimeWindow - Localized Start Time - Timestamp | Optional | The epoch timestamp when the lodging is expected to be open/available. | Joda-Time Instant | | AvailabilityTimeWindow - Localized Start Time - Timezone | Optional | Th
  • Network accessline 287
    | AvailabilityTimeWindow - Localized Start Time - Timestamp | Optional | The epoch timestamp when the lodging is expected to be open/available. | Joda-Time Instant | | AvailabilityTimeWindow - Localized Start Time - Timezone | Optional | Th
  • Network accessline 288
    | AvailabilityTimeWindow - Localized Start Time - Timezone | Optional | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/
  • Network accessline 288
    | AvailabilityTimeWindow - Localized Start Time - Timezone | Optional | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/
  • Network accessline 289
    | AvailabilityTimeWindow - Localized End Time - Timestamp | Optional | The epoch timestamp until which the lodging is expected to be open/available. | Joda-Time Instant | | AvailabilityTimeWindow - Localized End Time - Timezone | Optional |
  • Network accessline 289
    | AvailabilityTimeWindow - Localized End Time - Timestamp | Optional | The epoch timestamp until which the lodging is expected to be open/available. | Joda-Time Instant | | AvailabilityTimeWindow - Localized End Time - Timezone | Optional |
  • Network accessline 290
    | AvailabilityTimeWindow - Localized End Time - Timezone | Optional | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/en
  • Network accessline 290
    | AvailabilityTimeWindow - Localized End Time - Timezone | Optional | The timezone in which the lodging is expected to be open/available. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/en
  • Network accessline 308
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) 
  • Network accessline 308
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) 
  • Network accessline 309
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. | | Action Uri | **Required** | Deep 
  • Network accessline 309
    |---|---|---|---| | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. | | Action Uri | **Required** | Deep 
  • Network accessline 310
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 310
    | Poster images | **Required** | At least one image must be provided. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 311
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 311
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 328
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 328
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 329
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 329
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 330
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 330
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 331
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Poster images | Conditionally required | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note
  • Network accessline 331
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Poster images | Conditionally required | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note
  • Network accessline 332
    | Poster images | Conditionally required | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is required if the entity is part of recommendation cluster. If a badge is provided, en
  • Network accessline 332
    | Poster images | Conditionally required | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is required if the entity is part of recommendation cluster. If a badge is provided, en
  • Network accessline 340
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the point of interest. | Free text **Recommended text size: max \~20 chars** | | AvailabilityTimeWindow - Localized Start Time - Timestamp | Optional | The epoch tim
  • Network accessline 340
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the point of interest. | Free text **Recommended text size: max \~20 chars** | | AvailabilityTimeWindow - Localized Start Time - Timestamp | Optional | The epoch tim
  • Network accessline 341
    | AvailabilityTimeWindow - Localized Start Time - Timestamp | Optional | The epoch timestamp when the point of interest is expected to be open/available. | Joda-Time Instant | | AvailabilityTimeWindow - Localized Start Time - Timezone | Opt
  • Network accessline 341
    | AvailabilityTimeWindow - Localized Start Time - Timestamp | Optional | The epoch timestamp when the point of interest is expected to be open/available. | Joda-Time Instant | | AvailabilityTimeWindow - Localized Start Time - Timezone | Opt
  • Network accessline 342
    | AvailabilityTimeWindow - Localized Start Time - Timezone | Optional | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide
  • Network accessline 342
    | AvailabilityTimeWindow - Localized Start Time - Timezone | Optional | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide
  • Network accessline 343
    | AvailabilityTimeWindow - Localized End Time - Timestamp | Optional | The epoch timestamp until which the point of interest is expected to be open/available. | Joda-Time Instant | | AvailabilityTimeWindow - Localized End Time - Timezone | 
  • Network accessline 343
    | AvailabilityTimeWindow - Localized End Time - Timestamp | Optional | The epoch timestamp until which the point of interest is expected to be open/available. | Joda-Time Instant | | AvailabilityTimeWindow - Localized End Time - Timezone | 
  • Network accessline 344
    | AvailabilityTimeWindow - Localized End Time - Timezone | Optional | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/p
  • Network accessline 344
    | AvailabilityTimeWindow - Localized End Time - Timezone | Optional | The timezone in which the point of interest is expected to be open/available. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/p
  • Network accessline 345
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 345
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 346
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 346
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 347
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 347
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 355
    | Price - StrikethroughPrice | Optional | The original price of the tickets/entry pass for the point of interest. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text
  • Network accessline 355
    | Price - StrikethroughPrice | Optional | The original price of the tickets/entry pass for the point of interest. | Free text | | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text
  • Network accessline 356
    | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text size: under 45 chars (Text that is too long may show ellipses)** | | Content Categories | Optional | Describ
  • Network accessline 356
    | Price Callout | Optional | Price callout to feature a promo, event, member discount, if available. | Free text **Recommended text size: under 45 chars (Text that is too long may show ellipses)** | | Content Categories | Optional | Describ
  • Network accessline 357
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_TRAVEL_AND_LOCAL - TYPE_MOVIES_AND_TV_SHOWS (Example - theater) - TYPE_MEDICAL (Example - hospital) - TYPE_EDUCATION (Exam
  • Network accessline 357
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_TRAVEL_AND_LOCAL - TYPE_MOVIES_AND_TV_SHOWS (Example - theater) - TYPE_MEDICAL (Example - hospital) - TYPE_EDUCATION (Exam
  • Network accessline 364
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 364
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 365
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 365
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 366
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 366
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 367
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Localized Reservation Start Time - Timestamp | **Required** | The epoch timestamp when the reservation is expected to start. | Joda-Time Inst
  • Network accessline 367
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Localized Reservation Start Time - Timestamp | **Required** | The epoch timestamp when the reservation is expected to start. | Joda-Time Inst
  • Network accessline 368
    | Localized Reservation Start Time - Timestamp | **Required** | The epoch timestamp when the reservation is expected to start. | Joda-Time Instant | | Localized Reservation Start Time - Timezone | **Required** | The timezone in which the re
  • Network accessline 368
    | Localized Reservation Start Time - Timestamp | **Required** | The epoch timestamp when the reservation is expected to start. | Joda-Time Instant | | Localized Reservation Start Time - Timezone | **Required** | The timezone in which the re
  • Network accessline 369
    | Localized Reservation Start Time - Timezone | **Required** | The timezone in which the reservation is expected to start. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-
  • Network accessline 369
    | Localized Reservation Start Time - Timezone | **Required** | The timezone in which the reservation is expected to start. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-
  • Network accessline 375
    | Location - Zip code | Optional | The zip code (if applicable) of the restaurant. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicable) of the restaurant. | Free tex
  • Network accessline 375
    | Location - Zip code | Optional | The zip code (if applicable) of the restaurant. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicable) of the restaurant. | Free tex
  • Network accessline 376
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the restaurant. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Rec
  • Network accessline 376
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the restaurant. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Rec
  • Network accessline 377
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 377
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 387
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 387
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 388
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 388
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 389
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 389
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 390
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Localized Start time - Timestamp | **Required** | The epoch timestamp when the event is expected to start. | Joda-Time Instant | | Localized 
  • Network accessline 390
    | Title | **Required** | Title of the entity. | String **Recommended text size: Max 50 chars** | | Localized Start time - Timestamp | **Required** | The epoch timestamp when the event is expected to start. | Joda-Time Instant | | Localized 
  • Network accessline 391
    | Localized Start time - Timestamp | **Required** | The epoch timestamp when the event is expected to start. | Joda-Time Instant | | Localized Start time - Timezone | **Required** | The timezone in which the event is expected to start. | Jo
  • Network accessline 391
    | Localized Start time - Timestamp | **Required** | The epoch timestamp when the event is expected to start. | Joda-Time Instant | | Localized Start time - Timezone | **Required** | The timezone in which the event is expected to start. | Jo
  • Network accessline 392
    | Localized Start time - Timezone | **Required** | The timezone in which the event is expected to start. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidanc
  • Network accessline 392
    | Localized Start time - Timezone | **Required** | The timezone in which the event is expected to start. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidanc
  • Network accessline 399
    | Location - Zip code | Optional | The zip code (if applicable) of the location in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicab
  • Network accessline 399
    | Location - Zip code | Optional | The zip code (if applicable) of the location in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicab
  • Network accessline 400
    | Location - Neighborhood | Optional | The neighborhood (if applicable) in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images 
  • Network accessline 400
    | Location - Neighborhood | Optional | The neighborhood (if applicable) in which the event is being hosted. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images 
  • Network accessline 401
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom
  • Network accessline 401
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** Image is highly recommended. If a badge is provided, ensure safe space of 24 dps at both the top and bottom
  • Network accessline 402
    | Localized End time - Timestamp | Optional | The epoch timestamp when the event is expected to end. | Joda-Time Instant | | Localized End time - Timezone | Optional | The timezone in which the event is expected to end. | Joda-Time DateTime
  • Network accessline 402
    | Localized End time - Timestamp | Optional | The epoch timestamp when the event is expected to end. | Joda-Time Instant | | Localized End time - Timezone | Optional | The timezone in which the event is expected to end. | Joda-Time DateTime
  • Network accessline 403
    | Localized End time - Timezone | Optional | The timezone in which the event is expected to end. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidance. |
  • Network accessline 403
    | Localized End time - Timezone | Optional | The timezone in which the event is expected to end. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidance. |
  • Network accessline 404
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, name of the event organizer/tour | | Service Provider - Image | Optional 
  • Network accessline 404
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, name of the event organizer/tour | | Service Provider - Image | Optional 
  • Network accessline 405
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#imag
  • Network accessline 405
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#imag
  • Network accessline 408
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 408
    | Badges | Optional | Each badge is either free text (max 15 chars) or small image. |   | | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 c
  • Network accessline 409
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 409
    | Badge - Text | Optional | Title for the badge **Note:** Either text or image is required for the badge | Free text **Recommended text size: max 15 chars** | | Badge - Image | Optional | Small image Special UX treatment, for example as bad
  • Network accessline 410
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 410
    | Badge - Image | Optional | Small image Special UX treatment, for example as badge overlay on the image/video thumbnail. **Note:** Either text or image is required for the badge | See [Image Specifications](https://developer.android.com/gu
  • Network accessline 417
    | Rating - Count | Optional | The count of the ratings for the event. **Note:** Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, i
  • Network accessline 417
    | Rating - Count | Optional | The count of the ratings for the event. **Note:** Provide this field if your app wants to control how this is displayed to the users. Provide the concise string that can be displayed to the user. For example, i
  • Network accessline 418
    | Rating - Count Value | Optional | The count of the ratings for the event. **Note:** Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count t
  • Network accessline 418
    | Rating - Count Value | Optional | The count of the ratings for the event. **Note:** Provide this field if you don't want to handle the display abbreviation logic yourself. If both Count and Count Value are present, we will use the Count t
  • Network accessline 419
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 419
    | Content Categories | Optional | Describe the category of the content in the entity. | List of Eligible Enums - TYPE_MOVIES_AND_TV_SHOWS (Example - Cinema) - TYPE_DIGITAL_GAMES (Example - eSports) - TYPE_MUSIC (Example - Concert) - TYPE_TR
  • Network accessline 426
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 426
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 427
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 427
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 428
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 428
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 429
    | Title | **Required** | Title of the entity. | Free text. For example, "Your Stay from Dec 12th" **Recommended text size: Max 50 chars** | | Localized Check-in Time - Timestamp | **Required** | The epoch timestamp that represents the check
  • Network accessline 429
    | Title | **Required** | Title of the entity. | Free text. For example, "Your Stay from Dec 12th" **Recommended text size: Max 50 chars** | | Localized Check-in Time - Timestamp | **Required** | The epoch timestamp that represents the check
  • Network accessline 430
    | Localized Check-in Time - Timestamp | **Required** | The epoch timestamp that represents the check in time for the reservation. | Joda-Time Instant | | Localized Check-in Time - Timezone | **Required** | The timezone in which the check in
  • Network accessline 430
    | Localized Check-in Time - Timestamp | **Required** | The epoch timestamp that represents the check in time for the reservation. | Joda-Time Instant | | Localized Check-in Time - Timezone | **Required** | The timezone in which the check in
  • Network accessline 431
    | Localized Check-in Time - Timezone | **Required** | The timezone in which the check in time exists for the reservation. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-s
  • Network accessline 431
    | Localized Check-in Time - Timezone | **Required** | The timezone in which the check in time exists for the reservation. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-s
  • Network accessline 432
    | Localized Check-out Time - Timestamp | **Required** | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant | | Localized Check-out Time - Timezone | **Required** | The timezone in which the check
  • Network accessline 432
    | Localized Check-out Time - Timestamp | **Required** | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant | | Localized Check-out Time - Timezone | **Required** | The timezone in which the check
  • Network accessline 433
    | Localized Check-out Time - Timezone | **Required** | The timezone in which the check out time exists for the reservation. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz
  • Network accessline 433
    | Localized Check-out Time - Timezone | **Required** | The timezone in which the check out time exists for the reservation. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz
  • Network accessline 439
    | Location - Zip code | Optional | The zip code (if applicable) of the lodging. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicable) of the lodging. | Free text **Re
  • Network accessline 439
    | Location - Zip code | Optional | The zip code (if applicable) of the lodging. | Free text **Recommended text size: max \~20 chars** | | Location - Neighborhood | Optional | The neighborhood (if applicable) of the lodging. | Free text **Re
  • Network accessline 440
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the lodging. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recomm
  • Network accessline 440
    | Location - Neighborhood | Optional | The neighborhood (if applicable) of the lodging. | Free text **Recommended text size: max \~20 chars** | | Poster images | Optional | We will show only 1 image when multiple images are provided. Recomm
  • Network accessline 441
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Image Sp
  • Network accessline 441
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 **Note:** If a badge is provided, ensure safe space of 24 dps at both the top and bottom of the image | See [Image Sp
  • Network accessline 458
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 458
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 459
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 459
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 460
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 460
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 462
    | Transportation Type | **Required** | The mode/type of transportation for the reservation. | Enum: FLIGHT, TRAIN, BUS, or FERRY | | Localized Departure Time - Timestamp | **Required** | The epoch timestamp that represents the departure tim
  • Network accessline 462
    | Transportation Type | **Required** | The mode/type of transportation for the reservation. | Enum: FLIGHT, TRAIN, BUS, or FERRY | | Localized Departure Time - Timestamp | **Required** | The epoch timestamp that represents the departure tim
  • Network accessline 463
    | Localized Departure Time - Timestamp | **Required** | The epoch timestamp that represents the departure time. | Joda-Time Instant | | Localized Departure Time - Timezone | **Required** | The timezone of the departure time. | Joda-Time Dat
  • Network accessline 463
    | Localized Departure Time - Timestamp | **Required** | The epoch timestamp that represents the departure time. | Joda-Time Instant | | Localized Departure Time - Timezone | **Required** | The timezone of the departure time. | Joda-Time Dat
  • Network accessline 464
    | Localized Departure Time - Timezone | **Required** | The timezone of the departure time. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidance. |
  • Network accessline 464
    | Localized Departure Time - Timezone | **Required** | The timezone of the departure time. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidance. |
  • Network accessline 465
    | Localized Arrival Time - Timestamp | **Required** | The epoch timestamp that represents the arrival time. | Joda-Time Instant | | Localized Arrival Time - Timezone | **Required** | The timezone of the arrival time. | Joda-Time DateTimeZon
  • Network accessline 465
    | Localized Arrival Time - Timestamp | **Required** | The epoch timestamp that represents the arrival time. | Joda-Time Instant | | Localized Arrival Time - Timezone | **Required** | The timezone of the arrival time. | Joda-Time DateTimeZon
  • Network accessline 466
    | Localized Arrival Time - Timezone | **Required** | The timezone of the arrival time. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidance. |
  • Network accessline 466
    | Localized Arrival Time - Timezone | **Required** | The timezone of the arrival time. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidance. |
  • Network accessline 467
    | Transportation Number | **Required** | The flight number, bus number, train number, or ferry/cruise number. | Free text | | Localized Boarding Time - Timestamp | **Required** | The epoch timestamp that represents the boarding time for the
  • Network accessline 467
    | Transportation Number | **Required** | The flight number, bus number, train number, or ferry/cruise number. | Free text | | Localized Boarding Time - Timestamp | **Required** | The epoch timestamp that represents the boarding time for the
  • Network accessline 468
    | Localized Boarding Time - Timestamp | **Required** | The epoch timestamp that represents the boarding time for the reservation (if applicable) | Joda-Time Instant | | Localized Boarding Time - Timezone | **Required** | The timezone of the
  • Network accessline 468
    | Localized Boarding Time - Timestamp | **Required** | The epoch timestamp that represents the boarding time for the reservation (if applicable) | Joda-Time Instant | | Localized Boarding Time - Timezone | **Required** | The timezone of the
  • Network accessline 469
    | Localized Boarding Time - Timezone | **Required** | The timezone of the boarding time for the reservation (if applicable) | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz
  • Network accessline 469
    | Localized Boarding Time - Timezone | **Required** | The timezone of the boarding time for the reservation (if applicable) | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz
  • Network accessline 483
    | Arrival Location - Neighborhood | Optional | The neighborhood (if applicable) of the arrival location. | Free text **Recommended text size: max \~20 chars** | | Service Provider - Name | Optional | The name of the service provider. **Note
  • Network accessline 483
    | Arrival Location - Neighborhood | Optional | The neighborhood (if applicable) of the arrival location. | Free text **Recommended text size: max \~20 chars** | | Service Provider - Name | Optional | The name of the service provider. **Note
  • Network accessline 484
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, Airline name | | Service Provider - Image | Optional | The logo/image of 
  • Network accessline 484
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, Airline name | | Service Provider - Image | Optional | The logo/image of 
  • Network accessline 485
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#imag
  • Network accessline 485
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#imag
  • Network accessline 486
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 486
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 499
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 499
    | Attribute | Requirement | Description | Format | |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/
  • Network accessline 500
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 500
    |---|---|---|---| | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | 
  • Network accessline 501
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 501
    | Action Uri | **Required** | Deep Link to the entity in the provider app. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) | Uri |
  • Network accessline 502
    | Title | **Required** | Title of the entity. | Free text. For example, "Avis Union Square SF" **Recommended text size: Max 50 chars** | | Localized Pickup Time - Timestamp | **Required** | The epoch timestamp that represents the pick up ti
  • Network accessline 502
    | Title | **Required** | Title of the entity. | Free text. For example, "Avis Union Square SF" **Recommended text size: Max 50 chars** | | Localized Pickup Time - Timestamp | **Required** | The epoch timestamp that represents the pick up ti
  • Network accessline 503
    | Localized Pickup Time - Timestamp | **Required** | The epoch timestamp that represents the pick up time for the reservation. | Joda-Time Instant | | Localized Pickup Time - Timezone | **Required** | The timezone of the pick up time for th
  • Network accessline 503
    | Localized Pickup Time - Timestamp | **Required** | The epoch timestamp that represents the pick up time for the reservation. | Joda-Time Instant | | Localized Pickup Time - Timezone | **Required** | The timezone of the pick up time for th
  • Network accessline 504
    | Localized Pickup Time - Timezone | **Required** | The timezone of the pick up time for the reservation. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidan
  • Network accessline 504
    | Localized Pickup Time - Timezone | **Required** | The timezone of the pick up time for the reservation. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidan
  • Network accessline 505
    | Localized Return Time - Timestamp | Optional | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant | | Localized Return Time - Timezone | Optional | The timezone of the check out time for the re
  • Network accessline 505
    | Localized Return Time - Timestamp | Optional | The epoch timestamp that represents the check out time for the reservation. | Joda-Time Instant | | Localized Return Time - Timezone | Optional | The timezone of the check out time for the re
  • Network accessline 506
    | Localized Return Time - Timezone | Optional | The timezone of the check out time for the reservation. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidance
  • Network accessline 506
    | Localized Return Time - Timezone | Optional | The timezone of the check out time for the reservation. | Joda-Time DateTimeZone See [Timezone Specifications](https://developer.android.com/guide/playcore/engage/travel#tz-specs) for guidance
  • Network accessline 520
    | Return Address - Neighborhood | Optional | The neighborhood (if applicable) of the return location. | Free text **Recommended text size: max \~20 chars** | | Service Provider - Name | Optional | The name of the service provider. **Note:**
  • Network accessline 520
    | Return Address - Neighborhood | Optional | The neighborhood (if applicable) of the return location. | Free text **Recommended text size: max \~20 chars** | | Service Provider - Name | Optional | The name of the service provider. **Note:**
  • Network accessline 521
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, "Avis Car Rental" | | Service Provider - Image | Optional | The logo/imag
  • Network accessline 521
    | Service Provider - Name | Optional | The name of the service provider. **Note:**Either text or image is required for the service provider. | Free text. For example, "Avis Car Rental" | | Service Provider - Image | Optional | The logo/imag
  • Network accessline 522
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#imag
  • Network accessline 522
    | Service Provider - Image | Optional | The logo/image of the service provider. **Note:**Either text or image is required for the service provider. | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#imag
  • Network accessline 523
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 523
    | Poster images | Optional | We will show only 1 image when multiple images are provided. Recommended aspect ratio is 16:9 | See [Image Specifications](https://developer.android.com/guide/playcore/engage/travel#image-specs) for guidance. |
  • Network accessline 599
    - TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from [Watch integration guide](https://developer.android.com/guide/playcore/engage/watch) before using the generic entities.
  • Network accessline 599
    - TYPE_MOVIES_AND_TV_SHOWS - Check out the entities from [Watch integration guide](https://developer.android.com/guide/playcore/engage/watch) before using the generic entities.
  • Network accessline 600
    - TYPE_BOOKS - Check out the [EbookEntity](https://developer.android.com/guide/playcore/engage/read#ebookentity) before using the generic entities.
  • Network accessline 600
    - TYPE_BOOKS - Check out the [EbookEntity](https://developer.android.com/guide/playcore/engage/read#ebookentity) before using the generic entities.
  • Network accessline 601
    - TYPE_AUDIOBOOKS - Check out [AudiobookEntity](https://developer.android.com/guide/playcore/engage/read#audiobookentity) before using the generic entities.
  • Network accessline 601
    - TYPE_AUDIOBOOKS - Check out [AudiobookEntity](https://developer.android.com/guide/playcore/engage/read#audiobookentity) before using the generic entities.
  • Network accessline 602
    - TYPE_SHOPPING - Check out [ShoppingEntity](https://developer.android.com/guide/playcore/engage/shopping#shoppingEntity) before using the generic entities.
  • Network accessline 602
    - TYPE_SHOPPING - Check out [ShoppingEntity](https://developer.android.com/guide/playcore/engage/shopping#shoppingEntity) before using the generic entities.
  • Network accessline 603
    - TYPE_FOOD_AND_DRINK - Check out entities from [Food Integration guide](https://developer.android.com/guide/playcore/engage/food) before using the generic entities.
  • Network accessline 603
    - TYPE_FOOD_AND_DRINK - Check out entities from [Food Integration guide](https://developer.android.com/guide/playcore/engage/food) before using the generic entities.
  • Network accessline 613
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 613
    It is recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 614
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 614
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 646
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 646
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 650
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 650
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 962
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 962
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 963
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 963
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 964
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 964
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 967
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 967
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 968
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 968
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 969
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 969
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 981
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 981
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 982
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 982
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 983
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 983
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 986
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 986
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 987
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 987
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 988
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 988
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 1273
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1273
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1274
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 1274
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 1275
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1275
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1403
    The following [intents](https://developer.android.com/reference/android/content/Intent) is sent by the
  • Network accessline 1403
    The following [intents](https://developer.android.com/reference/android/content/Intent) is sent by the
  • Network accessline 1413
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1413
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1414
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1414
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1418
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for
  • Network accessline 1418
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for

play/engage-sdk-integration/references/android/guide/playcore/engage/tv/continue-watching/index.md

  • Network accessline 3
    apps in one UI grouping. You can feature your entities in this continuation cluster. Follow this guide to learn how to enhance user engagement through the continue watching experience using [Engage SDK](https://developer.android.com/guide/p
  • Network accessline 3
    apps in one UI grouping. You can feature your entities in this continuation cluster. Follow this guide to learn how to enhance user engagement through the continue watching experience using [Engage SDK](https://developer.android.com/guide/p
  • Network accessline 5
    continue watching experience using [Engage SDK](https://developer.android.com/guide/playcore/engage).
  • Network accessline 5
    continue watching experience using [Engage SDK](https://developer.android.com/guide/playcore/engage).
  • Network accessline 10
    - [Integrate continue watching on Android TV](https://developer.android.com/guide/playcore/engage/tv/continue-watching/client)
  • Network accessline 10
    - [Integrate continue watching on Android TV](https://developer.android.com/guide/playcore/engage/tv/continue-watching/client)
  • Network accessline 11
    - [Integrate continue watching using REST API](https://developer.android.com/guide/playcore/engage/tv/continue-watching/rest)
  • Network accessline 11
    - [Integrate continue watching using REST API](https://developer.android.com/guide/playcore/engage/tv/continue-watching/rest)
  • Network accessline 15
    This [sample app](https://github.com/googlesamples/tv-video-discovery-samples) demonstrates how you can integrate with Engage SDK
  • Network accessline 15
    This [sample app](https://github.com/googlesamples/tv-video-discovery-samples) demonstrates how you can integrate with Engage SDK

play/engage-sdk-integration/references/android/guide/playcore/engage/tv/entitlements.md

  • Network accessline 1
    This guide contains instructions for developers to share app subscription and entitlement data with Google TV using [Engage SDK](https://developer.android.com/guide/playcore/engage). Users can find
  • Network accessline 1
    This guide contains instructions for developers to share app subscription and entitlement data with Google TV using [Engage SDK](https://developer.android.com/guide/playcore/engage). Users can find
  • Network accessline 2
    entitlement data with Google TV using [Engage SDK](https://developer.android.com/guide/playcore/engage). Users can find
  • Network accessline 2
    entitlement data with Google TV using [Engage SDK](https://developer.android.com/guide/playcore/engage). Users can find
  • Network accessline 9
    > [!IMPORTANT] > **Important:** [Express interest in developing with Engage](http://g.co/tv/vda).
  • Network accessline 9
    > [!IMPORTANT] > **Important:** [Express interest in developing with Engage](http://g.co/tv/vda).
  • Network accessline 10
    > **Important:** [Express interest in developing with Engage](http://g.co/tv/vda).
  • Network accessline 10
    > **Important:** [Express interest in developing with Engage](http://g.co/tv/vda).
  • Network accessline 12
    Onboarding the media actions feed is required before you can use the device entitlement API. If you haven't already done so, complete the [media actions feed](https://developers.google.com/actions/media?authuser=0) onboarding process.
  • Network accessline 12
    Onboarding the media actions feed is required before you can use the device entitlement API. If you haven't already done so, complete the [media actions feed](https://developers.google.com/actions/media?authuser=0) onboarding process.
  • Network accessline 14
    feed](https://developers.google.com/actions/media?authuser=0) onboarding process.
  • Network accessline 14
    feed](https://developers.google.com/actions/media?authuser=0) onboarding process.
  • Network accessline 18
    Complete the [Pre-work](https://developer.android.com/guide/playcore/engage/tv/getting-started#pre-work) instructions in the Getting Started guide.
  • Network accessline 18
    Complete the [Pre-work](https://developer.android.com/guide/playcore/engage/tv/getting-started#pre-work) instructions in the Getting Started guide.
  • Network accessline 64
    // Don't match this string,         // ID is only used to for reconciliation purpose         "@id": "https://www.example.com/971bfc78-d13a-4419",
  • Network accessline 64
    // Don't match this string,         // ID is only used to for reconciliation purpose         "@id": "https://www.example.com/971bfc78-d13a-4419",
  • Network accessline 65
    // ID is only used to for reconciliation purpose         "@id": "https://www.example.com/971bfc78-d13a-4419",         // Don't match this, as name is only used for displaying purpose
  • Network accessline 65
    // ID is only used to for reconciliation purpose         "@id": "https://www.example.com/971bfc78-d13a-4419",         // Don't match this, as name is only used for displaying purpose
  • Network accessline 66
    "@id": "https://www.example.com/971bfc78-d13a-4419",
  • Network accessline 66
    "@id": "https://www.example.com/971bfc78-d13a-4419",
  • Network accessline 92
    1. `Identifier`: Required identifier string for this entitlement. This must match one of the [entitlement identifiers](https://developers.google.com/actions/media/concepts/access-requirements#entitlement-identifier) (note that this isn't th
  • Network accessline 92
    1. `Identifier`: Required identifier string for this entitlement. This must match one of the [entitlement identifiers](https://developers.google.com/actions/media/concepts/access-requirements#entitlement-identifier) (note that this isn't th
  • Network accessline 106
    // Don't match this string,         // ID is only used to for reconciliation purpose         "@id": "https://www.example.com/971bfc78-d13a-4419",
  • Network accessline 106
    // Don't match this string,         // ID is only used to for reconciliation purpose         "@id": "https://www.example.com/971bfc78-d13a-4419",
  • Network accessline 108
    "@id": "https://www.example.com/971bfc78-d13a-4419",
  • Network accessline 108
    "@id": "https://www.example.com/971bfc78-d13a-4419",
  • Network accessline 217
    Make sure to initialize the client and check for service availability as described in the [Getting Started guide](https://developer.android.com/guide/playcore/engage/tv/getting-started#common-integration).
  • Network accessline 217
    Make sure to initialize the client and check for service availability as described in the [Getting Started guide](https://developer.android.com/guide/playcore/engage/tv/getting-started#common-integration).
  • Network accessline 218
    described in the [Getting Started guide](https://developer.android.com/guide/playcore/engage/tv/getting-started#common-integration).
  • Network accessline 218
    described in the [Getting Started guide](https://developer.android.com/guide/playcore/engage/tv/getting-started#common-integration).
  • Network accessline 253
    `client.deleteClusters` method. This deletes all existing Engage    data for the account profile, or for the entire account depending on the    given [`DeleteReason`](https://developer.android.com/reference/com/google/android/engage/service
  • Network accessline 253
    `client.deleteClusters` method. This deletes all existing Engage    data for the account profile, or for the entire account depending on the    given [`DeleteReason`](https://developer.android.com/reference/com/google/android/engage/service
  • Network accessline 255
    given [`DeleteReason`](https://developer.android.com/reference/com/google/android/engage/service/DeleteReason).
  • Network accessline 255
    given [`DeleteReason`](https://developer.android.com/reference/com/google/android/engage/service/DeleteReason).
  • Network accessline 318
    > [!IMPORTANT]    > **Important:** Verify that the [Engage Service Flag](https://developer.android.com/guide/playcore/engage/workflow#switch-to-prod) is **not** set to production.
  • Network accessline 318
    > [!IMPORTANT]    > **Important:** Verify that the [Engage Service Flag](https://developer.android.com/guide/playcore/engage/workflow#switch-to-prod) is **not** set to production.
  • Network accessline 319
    > **Important:** Verify that the [Engage Service Flag](https://developer.android.com/guide/playcore/engage/workflow#switch-to-prod) is **not** set to production.
  • Network accessline 319
    > **Important:** Verify that the [Engage Service Flag](https://developer.android.com/guide/playcore/engage/workflow#switch-to-prod) is **not** set to production.
  • Network accessline 331
    To test your integration, use the [verification app](https://developer.android.com/guide/playcore/engage/tv/getting-started#testing).
  • Network accessline 331
    To test your integration, use the [verification app](https://developer.android.com/guide/playcore/engage/tv/getting-started#testing).
  • Network accessline 337
    ![Verification App Success Screenshot](https://developer.android.com/static/images/guide/playcore/engage/ett-va-success.png) **Figure 1.** Successful subscription
  • Network accessline 337
    ![Verification App Success Screenshot](https://developer.android.com/static/images/guide/playcore/engage/ett-va-success.png) **Figure 1.** Successful subscription
  • Network accessline 340
    ![Verification App Error Screenshot](https://developer.android.com/static/images/guide/playcore/engage/ett-va-error.png) **Figure 2.**Subscription unsuccessful
  • Network accessline 340
    ![Verification App Error Screenshot](https://developer.android.com/static/images/guide/playcore/engage/ett-va-error.png) **Figure 2.**Subscription unsuccessful
  • Network accessline 348
    ![Verification App Error Details Screenshot](https://developer.android.com/static/images/guide/playcore/engage/ett-va-error-details.png) **Figure 3.**Subscription Errors
  • Network accessline 348
    ![Verification App Error Details Screenshot](https://developer.android.com/static/images/guide/playcore/engage/ett-va-error-details.png) **Figure 3.**Subscription Errors
  • Network accessline 353
    ![Verification App Error Screenshot](https://developer.android.com/static/images/guide/playcore/engage/ett-va-details.png) **Figure 4.**Subscription Error Details
  • Network accessline 353
    ![Verification App Error Screenshot](https://developer.android.com/static/images/guide/playcore/engage/ett-va-details.png) **Figure 4.**Subscription Error Details

play/engage-sdk-integration/references/android/guide/playcore/engage/tv/getting-started.md

  • Network accessline 3
    [Engage SDK](https://developer.android.com/guide/playcore/engage) lets you deliver personalized recommendations
  • Network accessline 3
    [Engage SDK](https://developer.android.com/guide/playcore/engage) lets you deliver personalized recommendations
  • Network accessline 10
    - [Publish continue watching data](https://developer.android.com/guide/playcore/engage/tv/continue-watching)
  • Network accessline 10
    - [Publish continue watching data](https://developer.android.com/guide/playcore/engage/tv/continue-watching)
  • Network accessline 11
    - [Publish device entitlements](https://developer.android.com/guide/playcore/engage/tv/entitlements)
  • Network accessline 11
    - [Publish device entitlements](https://developer.android.com/guide/playcore/engage/tv/entitlements)
  • Network accessline 12
    - [Publish recommendations](https://developer.android.com/guide/playcore/engage/tv/recommendations)
  • Network accessline 12
    - [Publish recommendations](https://developer.android.com/guide/playcore/engage/tv/recommendations)
  • Network accessline 18
    1. [Express interest in developing with Engage SDK](http://g.co/tv/engage) to enroll in
  • Network accessline 18
    1. [Express interest in developing with Engage SDK](http://g.co/tv/engage) to enroll in
  • Network accessline 48
    6. Test your implementation using the verification app as outlined in the    [Testing section](https://developer.android.com/guide/playcore/engage/tv/getting-started#testing).
  • Network accessline 48
    6. Test your implementation using the verification app as outlined in the    [Testing section](https://developer.android.com/guide/playcore/engage/tv/getting-started#testing).
  • Network accessline 49
    [Testing section](https://developer.android.com/guide/playcore/engage/tv/getting-started#testing).
  • Network accessline 49
    [Testing section](https://developer.android.com/guide/playcore/engage/tv/getting-started#testing).
  • Network accessline 118
    An `AccountProfile` must be provided with an account ID in order for content to be synchronized between devices. See [Cross-device syncing](https://developer.android.com/guide/playcore/engage/tv/continue-watching/client#cross-device_syncing
  • Network accessline 118
    An `AccountProfile` must be provided with an account ID in order for content to be synchronized between devices. See [Cross-device syncing](https://developer.android.com/guide/playcore/engage/tv/continue-watching/client#cross-device_syncing
  • Network accessline 119
    be synchronized between devices. See [Cross-device syncing](https://developer.android.com/guide/playcore/engage/tv/continue-watching/client#cross-device_syncing).
  • Network accessline 119
    be synchronized between devices. See [Cross-device syncing](https://developer.android.com/guide/playcore/engage/tv/continue-watching/client#cross-device_syncing).
  • Network accessline 125
    [Download verification app](https://developer.android.com/guide/playcore/engage/tv/getting-started#lightbox-trigger)
  • Network accessline 125
    [Download verification app](https://developer.android.com/guide/playcore/engage/tv/getting-started#lightbox-trigger)
  • Network accessline 126
    app](https://developer.android.com/guide/playcore/engage/tv/getting-started#lightbox-trigger)
  • Network accessline 126
    app](https://developer.android.com/guide/playcore/engage/tv/getting-started#lightbox-trigger)
  • Network accessline 148
    1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License 
  • Network accessline 148
    1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License 
  • Network accessline 168
    6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information
  • Network accessline 168
    6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information
  • Network accessline 176
    8.1 Google Data APIs 8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons
  • Network accessline 176
    8.1 Google Data APIs 8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons
  • Network accessline 200
    14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any
  • Network accessline 200
    14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any

play/engage-sdk-integration/references/android/guide/playcore/engage/tv/recommendations.md

  • Network accessline 1
    This guide contains instructions for developers to integrate their recommended video content, using the [Engage SDK](https://developer.android.com/guide/playcore/engage), to populate recommendations
  • Network accessline 1
    This guide contains instructions for developers to integrate their recommended video content, using the [Engage SDK](https://developer.android.com/guide/playcore/engage), to populate recommendations
  • Network accessline 2
    video content, using the [Engage SDK](https://developer.android.com/guide/playcore/engage), to populate recommendations
  • Network accessline 2
    video content, using the [Engage SDK](https://developer.android.com/guide/playcore/engage), to populate recommendations
  • Network accessline 12
    > [!IMPORTANT] > **Important:** [Express interest in developing with Engage](http://g.co/tv/vda).
  • Network accessline 12
    > [!IMPORTANT] > **Important:** [Express interest in developing with Engage](http://g.co/tv/vda).
  • Network accessline 13
    > **Important:** [Express interest in developing with Engage](http://g.co/tv/vda).
  • Network accessline 13
    > **Important:** [Express interest in developing with Engage](http://g.co/tv/vda).
  • Network accessline 15
    Complete the [Pre-work](https://developer.android.com/guide/playcore/engage/tv/getting-started#pre-work) instructions in the Getting Started guide.
  • Network accessline 15
    Complete the [Pre-work](https://developer.android.com/guide/playcore/engage/tv/getting-started#pre-work) instructions in the Getting Started guide.
  • Network accessline 27
    Make sure to initialize the client and check for service availability as described in the [Getting Started guide](https://developer.android.com/guide/playcore/engage/tv/getting-started#common-integration).
  • Network accessline 27
    Make sure to initialize the client and check for service availability as described in the [Getting Started guide](https://developer.android.com/guide/playcore/engage/tv/getting-started#common-integration).
  • Network accessline 28
    described in the [Getting Started guide](https://developer.android.com/guide/playcore/engage/tv/getting-started#common-integration).
  • Network accessline 28
    described in the [Getting Started guide](https://developer.android.com/guide/playcore/engage/tv/getting-started#common-integration).
  • Network accessline 38
    The [`RecommendationClusterType`](https://developer.android.com/reference/com/google/android/engage/common/datamodel/RecommendationClusterType) determines how the
  • Network accessline 38
    The [`RecommendationClusterType`](https://developer.android.com/reference/com/google/android/engage/common/datamodel/RecommendationClusterType) determines how the
  • Network accessline 106
    The [`DeleteReason`](https://developer.android.com/reference/com/google/android/engage/service/DeleteReason) enum defines the reason for data deletion.
  • Network accessline 106
    The [`DeleteReason`](https://developer.android.com/reference/com/google/android/engage/service/DeleteReason) enum defines the reason for data deletion.
  • Network accessline 135
    1. [`MediaActionFeedEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/MediaActionFeedEntity)
  • Network accessline 135
    1. [`MediaActionFeedEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/MediaActionFeedEntity)
  • Network accessline 136
    2. [`MovieEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/MovieEntity)
  • Network accessline 136
    2. [`MovieEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/MovieEntity)
  • Network accessline 137
    3. [`TvShowEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/TvShowEntity)
  • Network accessline 137
    3. [`TvShowEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/TvShowEntity)
  • Network accessline 138
    4. [`LiveTvChannelEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/LiveTvChannelEntity)
  • Network accessline 138
    4. [`LiveTvChannelEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/LiveTvChannelEntity)
  • Network accessline 139
    5. [`LiveTvProgramEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/LiveTvProgramEntity)
  • Network accessline 139
    5. [`LiveTvProgramEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/LiveTvProgramEntity)
  • Network accessline 168
    .Builder()       .setPlatformType(PlatformType.TYPE_ANDROID_TV)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_tv"))
  • Network accessline 168
    .Builder()       .setPlatformType(PlatformType.TYPE_ANDROID_TV)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_tv"))
  • Network accessline 169
    .setPlatformType(PlatformType.TYPE_ANDROID_TV)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_tv"))       .build()
  • Network accessline 169
    .setPlatformType(PlatformType.TYPE_ANDROID_TV)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_tv"))       .build()
  • Network accessline 170
    .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_tv"))
  • Network accessline 170
    .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_tv"))
  • Network accessline 176
    .Builder()       .setPlatformType(PlatformType.TYPE_ANDROID_MOBILE)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_android"))
  • Network accessline 176
    .Builder()       .setPlatformType(PlatformType.TYPE_ANDROID_MOBILE)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_android"))
  • Network accessline 177
    .setPlatformType(PlatformType.TYPE_ANDROID_MOBILE)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_android"))       .build()
  • Network accessline 177
    .setPlatformType(PlatformType.TYPE_ANDROID_MOBILE)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_android"))       .build()
  • Network accessline 178
    .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_android"))
  • Network accessline 178
    .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_android"))
  • Network accessline 184
    .Builder()       .setPlatformType(PlatformType.TYPE_IOS)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_ios"))
  • Network accessline 184
    .Builder()       .setPlatformType(PlatformType.TYPE_IOS)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_ios"))
  • Network accessline 185
    .setPlatformType(PlatformType.TYPE_IOS)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_ios"))       .build()
  • Network accessline 185
    .setPlatformType(PlatformType.TYPE_IOS)       .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_ios"))       .build()
  • Network accessline 186
    .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_ios"))
  • Network accessline 186
    .setActionUri(Uri.parse("https://www.example.com/entity_uri_for_ios"))
  • Network accessline 203
    images maintain a 16:9 aspect ratio and a minimum height of 200 pixels for correct display of the "Recommendations" entity, especially within Google's [Entertainment Space](https://support.google.com/entertainmentspace/answer/10346911). Ima
  • Network accessline 203
    images maintain a 16:9 aspect ratio and a minimum height of 200 pixels for correct display of the "Recommendations" entity, especially within Google's [Entertainment Space](https://support.google.com/entertainmentspace/answer/10346911). Ima
  • Network accessline 204
    correct display of the "Recommendations" entity, especially within Google's [Entertainment Space](https://support.google.com/entertainmentspace/answer/10346911). Images with a height less than 200 pixels may not be shown.
  • Network accessline 204
    correct display of the "Recommendations" entity, especially within Google's [Entertainment Space](https://support.google.com/entertainmentspace/answer/10346911). Images with a height less than 200 pixels may not be shown.
  • Network accessline 205
    [Entertainment Space](https://support.google.com/entertainmentspace/answer/10346911). Images with a height less than 200
  • Network accessline 205
    [Entertainment Space](https://support.google.com/entertainmentspace/answer/10346911). Images with a height less than 200
  • Network accessline 208
    val image1 = Image.Builder()       .setImageUri(Uri.parse("http://www.example.com/entity_image1.png"))
  • Network accessline 208
    val image1 = Image.Builder()       .setImageUri(Uri.parse("http://www.example.com/entity_image1.png"))
  • Network accessline 209
    .setImageUri(Uri.parse("http://www.example.com/entity_image1.png"))
  • Network accessline 209
    .setImageUri(Uri.parse("http://www.example.com/entity_image1.png"))
  • Network accessline 214
    val image2 = Image.Builder()       .setImageUri(Uri.parse("http://www.example.com/entity_image2.png"))
  • Network accessline 214
    val image2 = Image.Builder()       .setImageUri(Uri.parse("http://www.example.com/entity_image2.png"))
  • Network accessline 215
    .setImageUri(Uri.parse("http://www.example.com/entity_image2.png"))
  • Network accessline 215
    .setImageUri(Uri.parse("http://www.example.com/entity_image2.png"))
  • Network accessline 295
    If you have integrated your Media catalogue or Media action feed with Google TV, you need not create separate entities for Movie or TV Show and instead you can create a [`MediaActionFeedEntity`](https://developer.android.com/reference/com/g
  • Network accessline 295
    If you have integrated your Media catalogue or Media action feed with Google TV, you need not create separate entities for Movie or TV Show and instead you can create a [`MediaActionFeedEntity`](https://developer.android.com/reference/com/g
  • Network accessline 296
    you need not create separate entities for Movie or TV Show and instead you can create a [`MediaActionFeedEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/MediaActionFeedEntity) which includes the re
  • Network accessline 296
    you need not create separate entities for Movie or TV Show and instead you can create a [`MediaActionFeedEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/MediaActionFeedEntity) which includes the re
  • Network accessline 297
    create a [`MediaActionFeedEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/MediaActionFeedEntity) which includes the
  • Network accessline 297
    create a [`MediaActionFeedEntity`](https://developer.android.com/reference/com/google/android/engage/video/datamodel/MediaActionFeedEntity) which includes the
  • Network accessline 403
    .setName("Channel Name")       // ID of the live TV channel       .setEntityId("https://www.example.com/channel/12345")
  • Network accessline 403
    .setName("Channel Name")       // ID of the live TV channel       .setEntityId("https://www.example.com/channel/12345")
  • Network accessline 404
    // ID of the live TV channel       .setEntityId("https://www.example.com/channel/12345")       .setDescription("A sentence describing this live TV channel.")
  • Network accessline 404
    // ID of the live TV channel       .setEntityId("https://www.example.com/channel/12345")       .setDescription("A sentence describing this live TV channel.")
  • Network accessline 405
    .setEntityId("https://www.example.com/channel/12345")
  • Network accessline 405
    .setEntityId("https://www.example.com/channel/12345")
  • Network accessline 436
    // First set the channel information       .setChannelName("Channel Name")       .setChannelId("https://www.example.com/channel/12345")
  • Network accessline 436
    // First set the channel information       .setChannelName("Channel Name")       .setChannelId("https://www.example.com/channel/12345")
  • Network accessline 437
    .setChannelName("Channel Name")       .setChannelId("https://www.example.com/channel/12345")       // channel playback uri must contain at least PlatformType.TYPE_ANDROID_TV
  • Network accessline 437
    .setChannelName("Channel Name")       .setChannelId("https://www.example.com/channel/12345")       // channel playback uri must contain at least PlatformType.TYPE_ANDROID_TV
  • Network accessline 438
    .setChannelId("https://www.example.com/channel/12345")
  • Network accessline 438
    .setChannelId("https://www.example.com/channel/12345")
  • Network accessline 442
    // Then set the program or card specific information.       .setName("Program Name")       .setEntityId("https://www.example.com/schedule/123")
  • Network accessline 442
    // Then set the program or card specific information.       .setName("Program Name")       .setEntityId("https://www.example.com/schedule/123")
  • Network accessline 443
    .setName("Program Name")       .setEntityId("https://www.example.com/schedule/123")       .setDescription("Program Description")
  • Network accessline 443
    .setName("Program Name")       .setEntityId("https://www.example.com/schedule/123")       .setDescription("Program Description")
  • Network accessline 444
    .setEntityId("https://www.example.com/schedule/123")
  • Network accessline 444
    .setEntityId("https://www.example.com/schedule/123")

play/engage-sdk-integration/references/android/guide/playcore/engage/watch.md

  • Network accessline 5
    SDK to deliver Continue Watching content and personalized recommendations directly to users across multiple on-device surfaces **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.h
  • Network accessline 5
    SDK to deliver Continue Watching content and personalized recommendations directly to users across multiple on-device surfaces **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.h
  • Network accessline 6
    directly to users across multiple on-device surfaces **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/ente
  • Network accessline 6
    directly to users across multiple on-device surfaces **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** , **[Entertainment Space](https://blog.google/products/android/ente
  • Network accessline 7
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** ,
  • Network accessline 7
    **[Collections](https://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html)** ,
  • Network accessline 8
    **[Entertainment Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The
  • Network accessline 8
    **[Entertainment Space](https://blog.google/products/android/entertainment-space/)** , and the Play Store. The
  • Network accessline 9
    integration adds less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 9
    integration adds less than 50 KB (compressed) to the average APK and takes most apps about a week of developer time. Learn more at our **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 11
    **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 11
    **[business site](http://play.google.com/console/about/programs/EngageSDK)**.
  • Network accessline 17
    > [!NOTE] > **Note:** Check the [TV integration guide](https://developer.android.com/guide/playcore/engage/tv) to learn more about the Continue Watching experience on Google TV.
  • Network accessline 17
    > [!NOTE] > **Note:** Check the [TV integration guide](https://developer.android.com/guide/playcore/engage/tv) to learn more about the Continue Watching experience on Google TV.
  • Network accessline 18
    > **Note:** Check the [TV integration guide](https://developer.android.com/guide/playcore/engage/tv) to learn more about the Continue Watching experience on Google TV.
  • Network accessline 18
    > **Note:** Check the [TV integration guide](https://developer.android.com/guide/playcore/engage/tv) to learn more about the Continue Watching experience on Google TV.
  • Network accessline 34
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 34
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 38
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 38
    Use the Engage SDK [Android skill](https://developer.android.com/tools/agents/android-skills) to integrate, debug, and resolve implementation issues. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/and
  • Network accessline 61
    ![](https://developer.android.com/static/images/guide/playcore/engage/watch-term-1.png) **Figure 1.** Entertainment Space UI showing a Recommendation Cluster from a single partner.
  • Network accessline 61
    ![](https://developer.android.com/static/images/guide/playcore/engage/watch-term-1.png) **Figure 1.** Entertainment Space UI showing a Recommendation Cluster from a single partner.
  • Network accessline 62
    - **Entity:** An object representing a single item in a cluster. An entity     can be a movie, a TV show, a TV series, live video, and more. See the     [Provide entity data](https://developer.android.com/guide/playcore/engage/watch#provide
  • Network accessline 62
    - **Entity:** An object representing a single item in a cluster. An entity     can be a movie, a TV show, a TV series, live video, and more. See the     [Provide entity data](https://developer.android.com/guide/playcore/engage/watch#provide
  • Network accessline 63
    can be a movie, a TV show, a TV series, live video, and more. See the     [Provide entity data](https://developer.android.com/guide/playcore/engage/watch#provide-entity-data) section for a list of     supported entity types.
  • Network accessline 63
    can be a movie, a TV show, a TV series, live video, and more. See the     [Provide entity data](https://developer.android.com/guide/playcore/engage/watch#provide-entity-data) section for a list of     supported entity types.
  • Network accessline 64
    [Provide entity data](https://developer.android.com/guide/playcore/engage/watch#provide-entity-data) section for a list of
  • Network accessline 64
    [Provide entity data](https://developer.android.com/guide/playcore/engage/watch#provide-entity-data) section for a list of
  • Network accessline 67
    ![](https://developer.android.com/static/images/guide/playcore/engage/watch-term-2.png) **Figure 2.** Entertainment Space UI showing a single Entity within a single partner's Recommendation Cluster.
  • Network accessline 67
    ![](https://developer.android.com/static/images/guide/playcore/engage/watch-term-2.png) **Figure 2.** Entertainment Space UI showing a single Entity within a single partner's Recommendation Cluster.
  • Network accessline 74
    ![](https://developer.android.com/static/images/guide/playcore/engage/watch-term-3.png) **Figure 3.** Entertainment Space UI showing a Continuation cluster with unfinished recommendations from multiple partners (only one recommendation is c
  • Network accessline 74
    ![](https://developer.android.com/static/images/guide/playcore/engage/watch-term-3.png) **Figure 3.** Entertainment Space UI showing a Continuation cluster with unfinished recommendations from multiple partners (only one recommendation is c
  • Network accessline 81
    ![](https://developer.android.com/static/images/guide/playcore/engage/watch-term-4.png) **Figure 4.** Entertainment Space UI showing a Featured cluster with recommendations from multiple partners (only one recommendation is currently visibl
  • Network accessline 81
    ![](https://developer.android.com/static/images/guide/playcore/engage/watch-term-4.png) **Figure 4.** Entertainment Space UI showing a Featured cluster with recommendations from multiple partners (only one recommendation is currently visibl
  • Network accessline 94
    For more information, see [Package visibility in Android 11](https://developer.android.com/about/versions/11/privacy/package-visibility).
  • Network accessline 94
    For more information, see [Package visibility in Android 11](https://developer.android.com/about/versions/11/privacy/package-visibility).
  • Network accessline 95
    11](https://developer.android.com/about/versions/11/privacy/package-visibility).
  • Network accessline 95
    11](https://developer.android.com/about/versions/11/privacy/package-visibility).
  • Network accessline 99
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 99
    The design is based on an implementation of a [bound service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 100
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 100
    service](https://developer.android.com/guide/components/bound-services).
  • Network accessline 111
    > [!IMPORTANT] > **Important:** Engage SDK has superseded Media Home, which is now deprecated. If you have an existing Media Home integration, follow the instructions in [Step > 0](https://developer.android.com/guide/playcore/engage/watch#m
  • Network accessline 111
    > [!IMPORTANT] > **Important:** Engage SDK has superseded Media Home, which is now deprecated. If you have an existing Media Home integration, follow the instructions in [Step > 0](https://developer.android.com/guide/playcore/engage/watch#m
  • Network accessline 112
    > **Important:** Engage SDK has superseded Media Home, which is now deprecated. If you have an existing Media Home integration, follow the instructions in [Step > 0](https://developer.android.com/guide/playcore/engage/watch#migration) to mi
  • Network accessline 112
    > **Important:** Engage SDK has superseded Media Home, which is now deprecated. If you have an existing Media Home integration, follow the instructions in [Step > 0](https://developer.android.com/guide/playcore/engage/watch#migration) to mi
  • Network accessline 113
    > 0](https://developer.android.com/guide/playcore/engage/watch#migration) to migrate your content to Engage SDK, which allows your content to be published to more devices and form factors. Contact [`engage-developers@google.com`](mailto:eng
  • Network accessline 113
    > 0](https://developer.android.com/guide/playcore/engage/watch#migration) to migrate your content to Engage SDK, which allows your content to be published to more devices and form factors. Contact [`engage-developers@google.com`](mailto:eng
  • Network accessline 114
    > 1](https://developer.android.com/guide/playcore/engage/watch#provide-entity-data).
  • Network accessline 114
    > 1](https://developer.android.com/guide/playcore/engage/watch#provide-entity-data).
  • Network accessline 183
    1. [`MovieEntity`](https://developer.android.com/guide/playcore/engage/watch#movieentity)
  • Network accessline 183
    1. [`MovieEntity`](https://developer.android.com/guide/playcore/engage/watch#movieentity)
  • Network accessline 184
    2. [`TvShowEntity`](https://developer.android.com/guide/playcore/engage/watch#tvshowentity)
  • Network accessline 184
    2. [`TvShowEntity`](https://developer.android.com/guide/playcore/engage/watch#tvshowentity)
  • Network accessline 185
    3. [`TvSeasonEntity`](https://developer.android.com/guide/playcore/engage/watch#tvseasonentity)
  • Network accessline 185
    3. [`TvSeasonEntity`](https://developer.android.com/guide/playcore/engage/watch#tvseasonentity)
  • Network accessline 186
    4. [`TvEpisodeEntity`](https://developer.android.com/guide/playcore/engage/watch#tvepisodeentity)
  • Network accessline 186
    4. [`TvEpisodeEntity`](https://developer.android.com/guide/playcore/engage/watch#tvepisodeentity)
  • Network accessline 187
    5. [`LiveStreamingVideoEntity`](https://developer.android.com/guide/playcore/engage/watch#livestreamingvideoentity)
  • Network accessline 187
    5. [`LiveStreamingVideoEntity`](https://developer.android.com/guide/playcore/engage/watch#livestreamingvideoentity)
  • Network accessline 188
    6. [`VideoClipEntity`](https://developer.android.com/guide/playcore/engage/watch#videoclipentity)
  • Network accessline 188
    6. [`VideoClipEntity`](https://developer.android.com/guide/playcore/engage/watch#videoclipentity)
  • Network accessline 195
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 195
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 196
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 196
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 197
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 197
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 198
    | Playback uri | **Required** for mobile | The deep link to the provider app to start playing the movie. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 198
    | Playback uri | **Required** for mobile | The deep link to the provider app to start playing the movie. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 199
    | Platform specific playback URIs | Optional for mobile; required for Google TV | Platform-specific deep links to the provider app to start playing the movie. | | Info page uri | Optional | The deep link to the provider app to show details 
  • Network accessline 199
    | Platform specific playback URIs | Optional for mobile; required for Google TV | Platform-specific deep links to the provider app to start playing the movie. | | Info page uri | Optional | The deep link to the provider app to show details 
  • Network accessline 200
    | Info page uri | Optional | The deep link to the provider app to show details about the movie. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution)
  • Network accessline 200
    | Info page uri | Optional | The deep link to the provider app to show details about the movie. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution)
  • Network accessline 204
    | Duration | **Required** | In milliseconds. | | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 204
    | Duration | **Required** | In milliseconds. | | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 205
    | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) | | Call to action text | Optional | Free text to be
  • Network accessline 205
    | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) | | Call to action text | Optional | Free text to be
  • Network accessline 206
    | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 206
    | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 216
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 216
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 217
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 217
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 218
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 218
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 219
    | Info page uri | **Required** | The deep link to the provider app to show the details of the TV show. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 219
    | Info page uri | **Required** | The deep link to the provider app to show the details of the TV show. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attri
  • Network accessline 220
    | Playback uri | Optional | The deep link to the provider app to start playing the TV show. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 220
    | Playback uri | Optional | The deep link to the provider app to start playing the TV show. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attribution) |
  • Network accessline 226
    | Season count | Optional | Positive integer | | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 226
    | Season count | Optional | Positive integer | | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 227
    | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) | | Call to action text | Optional | Free text to be
  • Network accessline 227
    | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) | | Call to action text | Optional | Free text to be
  • Network accessline 228
    | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 228
    | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 238
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 238
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 239
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 239
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 240
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 240
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 241
    | Info page uri | **Required** | The deep link to the provider app to show the details of the TV show season. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplink
  • Network accessline 241
    | Info page uri | **Required** | The deep link to the provider app to show the details of the TV show season. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplink
  • Network accessline 242
    | Playback uri | Optional | The deep link to the provider app to start playing the TV show season. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attributi
  • Network accessline 242
    | Playback uri | Optional | The deep link to the provider app to start playing the TV show season. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-attributi
  • Network accessline 248
    | Episode count | Optional | Positive integer | | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 248
    | Episode count | Optional | Positive integer | | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 249
    | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) | | Call to action text | Optional | Free text to be
  • Network accessline 249
    | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) | | Call to action text | Optional | Free text to be
  • Network accessline 250
    | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 250
    | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 260
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 260
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 261
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 261
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 262
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 262
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 263
    | Playback uri | **Required** for mobile | The deep link to the provider app to start playing the episode. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-a
  • Network accessline 263
    | Playback uri | **Required** for mobile | The deep link to the provider app to start playing the episode. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-a
  • Network accessline 264
    | Platform specific playback URIs | Optional for mobile; required for Google TV | Platform-specific deep links to the provider app to start playing the episode. | | Info page uri | Optional | The deep link to the provider app to show detail
  • Network accessline 264
    | Platform specific playback URIs | Optional for mobile; required for Google TV | Platform-specific deep links to the provider app to start playing the episode. | | Info page uri | Optional | The deep link to the provider app to show detail
  • Network accessline 265
    | Info page uri | Optional | The deep link to the provider app to show details about the TV show episode. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-at
  • Network accessline 265
    | Info page uri | Optional | The deep link to the provider app to show details about the TV show episode. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-at
  • Network accessline 272
    | Duration | **Required** | Must be a positive value in milliseconds. | | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-rat
  • Network accessline 272
    | Duration | **Required** | Must be a positive value in milliseconds. | | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-rat
  • Network accessline 273
    | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) | | Call to action text | Optional | Free text to be
  • Network accessline 273
    | Genre | Optional | Free text | | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) | | Call to action text | Optional | Free text to be
  • Network accessline 274
    | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 274
    | Content ratings | Optional | Free text, follow the industry standard. ([Example](https://www.spectrum.net/support/tv/tv-and-movie-ratings-descriptions)) |
  • Network accessline 284
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 284
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 285
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 285
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 286
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 286
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 287
    | Playback uri | **Required** for mobile | The deep link to the provider app to start playing the video. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 287
    | Playback uri | **Required** for mobile | The deep link to the provider app to start playing the video. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 305
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 305
    |---|---|---| | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scena
  • Network accessline 306
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 306
    | Name | **Required** |   | | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recomm
  • Network accessline 307
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 307
    | Poster images | **Required** | At least one image is required, and must be provided with an aspect ratio. (Landscape is preferred but passing both portrait and landscape images for different scenarios is recommended.) See [Image Specifica
  • Network accessline 308
    | Playback uri | **Required** for mobile | The deep link to the provider app to start playing the video. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 308
    | Playback uri | **Required** for mobile | The deep link to the provider app to start playing the video. Note: You can use deep links for attribution. [Refer to this FAQ](https://developer.android.com/guide/playcore/engage/faq#deeplinks-att
  • Network accessline 342
    .setName("Avengers")         .addPosterImage(Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 342
    .setName("Avengers")         .addPosterImage(Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 343
    .addPosterImage(Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))                               .setImageHeightInPixel(960)
  • Network accessline 343
    .addPosterImage(Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))                               .setImageHeightInPixel(960)
  • Network accessline 344
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 344
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 346
    .setImageWidthInPixel(408)                               .build())         .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
  • Network accessline 346
    .setImageWidthInPixel(408)                               .build())         .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
  • Network accessline 347
    .build())         .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))         .setReleaseDateEpochMillis(1633032895L)
  • Network accessline 347
    .build())         .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))         .setReleaseDateEpochMillis(1633032895L)
  • Network accessline 348
    .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
  • Network accessline 348
    .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
  • Network accessline 364
    .addPosterImage(                           new Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 364
    .addPosterImage(                           new Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 365
    new Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))                               .setImageHeightInPixel(960)
  • Network accessline 365
    new Image.Builder()                               .setImageUri(Uri.parse("http://www.x.com/image.png"))                               .setImageHeightInPixel(960)
  • Network accessline 366
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 366
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 368
    .setImageWidthInPixel(408)                               .build())                       .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
  • Network accessline 368
    .setImageWidthInPixel(408)                               .build())                       .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
  • Network accessline 369
    .build())                       .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))                       .setReleaseDateEpochMillis(1633032895L)
  • Network accessline 369
    .build())                       .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))                       .setReleaseDateEpochMillis(1633032895L)
  • Network accessline 370
    .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
  • Network accessline 370
    .setPlayBackUri(Uri.parse("http://tv.com/playback/1"))
  • Network accessline 384
    It's recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 384
    It's recommended to have the content publish job executed in the background (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 385
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 385
    (for example, using [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager))
  • Network accessline 414
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 414
    [View on GitHub](https://github.com/android/skills/tree/main/play/engage-sdk-integration)
  • Network accessline 418
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 418
    To install the skill from the [Android CLI](https://developer.android.com/tools/agents/android-cli), run:
  • Network accessline 684
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 684
    .addPosterImage(                   Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 685
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 685
    Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 686
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 686
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 689
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 689
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 690
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 690
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build()
  • Network accessline 691
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 691
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 703
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 703
    .addPosterImage(                   new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 704
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 704
    new Image.Builder()                       .setImageUri(Uri.parse("http://www.x.com/image.png"))                       .setImageHeightInPixel(500)
  • Network accessline 705
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 705
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 708
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 708
    .build())               .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 709
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 709
    .setActionText("Sign In")               .setActionUri(Uri.parse("http://xx.com/signin"))               .build();
  • Network accessline 710
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 710
    .setActionUri(Uri.parse("http://xx.com/signin"))
  • Network accessline 972
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 972
    In addition to making publish content API calls through a job, it is also required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 973
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 973
    required to set up a [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive the request for a content publish.
  • Network accessline 974
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 974
    [`BroadcastReceiver`](https://developer.android.com/reference/android/content/BroadcastReceiver) to receive
  • Network accessline 1082
    The following [intents](https://developer.android.com/reference/android/content/Intent) is sent by the
  • Network accessline 1082
    The following [intents](https://developer.android.com/reference/android/content/Intent) is sent by the
  • Network accessline 1091
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1091
    For a step-by-step guide on verifying your integration after it is complete, see [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1092
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1092
    [Engage developer integration workflow](https://developer.android.com/guide/playcore/engage/workflow).
  • Network accessline 1096
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for
  • Network accessline 1096
    See [Engage SDK Frequently Asked Questions](https://developer.android.com/guide/playcore/engage/faq) for

play/engage-sdk-integration/references/patterns.md

  • Network accessline 311
    .addPosterImage(                 com.google.android.engage.common.datamodel.Image.Builder()                     .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 311
    .addPosterImage(                 com.google.android.engage.common.datamodel.Image.Builder()                     .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 312
    com.google.android.engage.common.datamodel.Image.Builder()                     .setImageUri(Uri.parse("http://www.x.com/image.png"))                     .setImageHeightInPixel(500)
  • Network accessline 312
    com.google.android.engage.common.datamodel.Image.Builder()                     .setImageUri(Uri.parse("http://www.x.com/image.png"))                     .setImageHeightInPixel(500)
  • Network accessline 313
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 313
    .setImageUri(Uri.parse("http://www.x.com/image.png"))
  • Network accessline 317
    )             .setActionText(signInCardAction)             .setActionUri(Uri.parse("https://xyz.com/signin"))
  • Network accessline 317
    )             .setActionText(signInCardAction)             .setActionUri(Uri.parse("https://xyz.com/signin"))
  • Network accessline 318
    .setActionText(signInCardAction)             .setActionUri(Uri.parse("https://xyz.com/signin"))             .build()
  • Network accessline 318
    .setActionText(signInCardAction)             .setActionUri(Uri.parse("https://xyz.com/signin"))             .build()
  • Network accessline 319
    .setActionUri(Uri.parse("https://xyz.com/signin"))
  • Network accessline 319
    .setActionUri(Uri.parse("https://xyz.com/signin"))
  • Network accessline 501
    com.google.android.engage.common.datamodel.PlatformSpecificUri.Builder()         .setPlatformType(com.google.android.engage.common.datamodel.PlatformType.TYPE_ANDROID_TV)         .setActionUri(Uri.parse("https://www.example.com/tv/play/123"
  • Network accessline 501
    com.google.android.engage.common.datamodel.PlatformSpecificUri.Builder()         .setPlatformType(com.google.android.engage.common.datamodel.PlatformType.TYPE_ANDROID_TV)         .setActionUri(Uri.parse("https://www.example.com/tv/play/123"
  • Network accessline 502
    .setPlatformType(com.google.android.engage.common.datamodel.PlatformType.TYPE_ANDROID_TV)         .setActionUri(Uri.parse("https://www.example.com/tv/play/123"))         .build(),
  • Network accessline 502
    .setPlatformType(com.google.android.engage.common.datamodel.PlatformType.TYPE_ANDROID_TV)         .setActionUri(Uri.parse("https://www.example.com/tv/play/123"))         .build(),
  • Network accessline 503
    .setActionUri(Uri.parse("https://www.example.com/tv/play/123"))
  • Network accessline 503
    .setActionUri(Uri.parse("https://www.example.com/tv/play/123"))
  • Network accessline 505
    com.google.android.engage.common.datamodel.PlatformSpecificUri.Builder()         .setPlatformType(com.google.android.engage.common.datamodel.PlatformType.TYPE_ANDROID_MOBILE)         .setActionUri(Uri.parse("https://www.example.com/mobile/p
  • Network accessline 505
    com.google.android.engage.common.datamodel.PlatformSpecificUri.Builder()         .setPlatformType(com.google.android.engage.common.datamodel.PlatformType.TYPE_ANDROID_MOBILE)         .setActionUri(Uri.parse("https://www.example.com/mobile/p
  • Network accessline 506
    .setPlatformType(com.google.android.engage.common.datamodel.PlatformType.TYPE_ANDROID_MOBILE)         .setActionUri(Uri.parse("https://www.example.com/mobile/play/123"))         .build()
  • Network accessline 506
    .setPlatformType(com.google.android.engage.common.datamodel.PlatformType.TYPE_ANDROID_MOBILE)         .setActionUri(Uri.parse("https://www.example.com/mobile/play/123"))         .build()
  • Network accessline 507
    .setActionUri(Uri.parse("https://www.example.com/mobile/play/123"))
  • Network accessline 507
    .setActionUri(Uri.parse("https://www.example.com/mobile/play/123"))

play/play-billing-library-version-upgrade/SKILL.md

  • Network accessline 49
    - **[Migration Guide](https://developer.android.com/google/play/billing/migrate-gpblv%5BX%5D)** (where `[X]` is the target major version).
  • Network accessline 49
    - **[Migration Guide](https://developer.android.com/google/play/billing/migrate-gpblv%5BX%5D)** (where `[X]` is the target major version).

play/play-billing-library-version-upgrade/references/android/google/play/billing/release-notes.md

  • Network accessline 6
    [View on GitHub](https://github.com/android/skills/tree/main/play/play-billing-library-version-upgrade)
  • Network accessline 6
    [View on GitHub](https://github.com/android/skills/tree/main/play/play-billing-library-version-upgrade)
  • Network accessline 10
    Use the Play Billing Library [Android skill](https://developer.android.com/tools/agents/android-skills) to automate your upgrade to the latest version. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/a
  • Network accessline 10
    Use the Play Billing Library [Android skill](https://developer.android.com/tools/agents/android-skills) to automate your upgrade to the latest version. To install the skill from the [Android CLI](https://developer.android.com/tools/agents/a
  • Network accessline 26
    - New APIs for [Billing Choice](https://developer.android.com/google/play/billing/billingchoice):
  • Network accessline 26
    - New APIs for [Billing Choice](https://developer.android.com/google/play/billing/billingchoice):
  • Network accessline 27
    - Added [`BillingClient.getBillingChoiceInfoAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#getBillingChoiceInfoAsync(com.android.billingclient.api.GetBillingChoiceInfoParams,com.android.billing
  • Network accessline 27
    - Added [`BillingClient.getBillingChoiceInfoAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#getBillingChoiceInfoAsync(com.android.billingclient.api.GetBillingChoiceInfoParams,com.android.billing
  • Network accessline 28
    - Added [`BillingChoiceInfo`](https://developer.android.com/reference/com/android/billingclient/api/BillingChoiceInfo) class which contains the response details, including image URLs and loyalty information.
  • Network accessline 28
    - Added [`BillingChoiceInfo`](https://developer.android.com/reference/com/android/billingclient/api/BillingChoiceInfo) class which contains the response details, including image URLs and loyalty information.
  • Network accessline 29
    - Added [`GetBillingChoiceInfoParams`](https://developer.android.com/reference/com/android/billingclient/api/GetBillingChoiceInfoParams) to configure the request.
  • Network accessline 29
    - Added [`GetBillingChoiceInfoParams`](https://developer.android.com/reference/com/android/billingclient/api/GetBillingChoiceInfoParams) to configure the request.
  • Network accessline 30
    - Added [`BillingChoiceInfoResponseListener`](https://developer.android.com/reference/com/android/billingclient/api/BillingChoiceInfoResponseListener) to receive the callback.
  • Network accessline 30
    - Added [`BillingChoiceInfoResponseListener`](https://developer.android.com/reference/com/android/billingclient/api/BillingChoiceInfoResponseListener) to receive the callback.
  • Network accessline 31
    - Added Kotlin extension `BillingClient.getBillingChoiceInfo()` suspend function.   - Added [`BillingClient.showBillingProgramInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showBill
  • Network accessline 31
    - Added Kotlin extension `BillingClient.getBillingChoiceInfo()` suspend function.   - Added [`BillingClient.showBillingProgramInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showBill
  • Network accessline 32
    - Added [`BillingClient.showBillingProgramInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showBillingProgramInformationDialog(android.app.Activity,com.android.billingclient.api.Billi
  • Network accessline 32
    - Added [`BillingClient.showBillingProgramInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showBillingProgramInformationDialog(android.app.Activity,com.android.billingclient.api.Billi
  • Network accessline 33
    - Added [`BillingProgramInformationDialogParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingProgramInformationDialogParams) to configure the dialog.
  • Network accessline 33
    - Added [`BillingProgramInformationDialogParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingProgramInformationDialogParams) to configure the dialog.
  • Network accessline 34
    - Added [`BillingProgramInformationDialogListener`](https://developer.android.com/reference/com/android/billingclient/api/BillingProgramInformationDialogListener) to receive the callback.
  • Network accessline 34
    - Added [`BillingProgramInformationDialogListener`](https://developer.android.com/reference/com/android/billingclient/api/BillingProgramInformationDialogListener) to receive the callback.
  • Network accessline 35
    - Added [`BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetails`](https://developer.android.com/reference/com/android/billingclient/api/BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetails) to provide details abou
  • Network accessline 35
    - Added [`BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetails`](https://developer.android.com/reference/com/android/billingclient/api/BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetails) to provide details abou
  • Network accessline 36
    - Added [`ChoiceScreenType`](https://developer.android.com/reference/com/android/billingclient/api/BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetails.ChoiceScreenType) to specify the type of choice screen.
  • Network accessline 36
    - Added [`ChoiceScreenType`](https://developer.android.com/reference/com/android/billingclient/api/BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetails.ChoiceScreenType) to specify the type of choice screen.
  • Network accessline 40
    Version 9.0.0 of the Google Play Billing Library and Kotlin extensions are now available. See the [PBL 9 migration guide](https://developer.android.com/google/play/billing/migrate-pbl-latest) if you want to migrate from
  • Network accessline 40
    Version 9.0.0 of the Google Play Billing Library and Kotlin extensions are now available. See the [PBL 9 migration guide](https://developer.android.com/google/play/billing/migrate-pbl-latest) if you want to migrate from
  • Network accessline 41
    now available. See the [PBL 9 migration guide](https://developer.android.com/google/play/billing/migrate-pbl-latest) if you want to migrate from
  • Network accessline 41
    now available. See the [PBL 9 migration guide](https://developer.android.com/google/play/billing/migrate-pbl-latest) if you want to migrate from
  • Network accessline 54
    > [!NOTE]   > **Note:** For this feature to work, you need [AndroidX.core library](https://developer.android.com/jetpack/androidx/releases/core#1.9.0) version 1.9 or later.
  • Network accessline 54
    > [!NOTE]   > **Note:** For this feature to work, you need [AndroidX.core library](https://developer.android.com/jetpack/androidx/releases/core#1.9.0) version 1.9 or later.
  • Network accessline 55
    > **Note:** For this feature to work, you need [AndroidX.core library](https://developer.android.com/jetpack/androidx/releases/core#1.9.0) version 1.9 or later.
  • Network accessline 55
    > **Note:** For this feature to work, you need [AndroidX.core library](https://developer.android.com/jetpack/androidx/releases/core#1.9.0) version 1.9 or later.
  • Network accessline 57
    - **Nullability update for developer-provided billing** : The   [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails#getLinkUri()) method has
  • Network accessline 57
    - **Nullability update for developer-provided billing** : The   [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails#getLinkUri()) method has
  • Network accessline 58
    [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails#getLinkUri()) method has
  • Network accessline 58
    [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails#getLinkUri()) method has
  • Network accessline 63
    To handle this change safely, ensure your integration code handles both   `null` and empty string (`""`) values from the   [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/ap
  • Network accessline 63
    To handle this change safely, ensure your integration code handles both   `null` and empty string (`""`) values from the   [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/ap
  • Network accessline 64
    `null` and empty string (`""`) values from the   [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails#getLinkUri()) method before parsing   or
  • Network accessline 64
    `null` and empty string (`""`) values from the   [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails#getLinkUri()) method before parsing   or
  • Network accessline 65
    [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails#getLinkUri()) method before parsing
  • Network accessline 65
    [`DeveloperProvidedBillingDetails.getLinkUri()`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails#getLinkUri()) method before parsing
  • Network accessline 69
    - You can now use [in-app messaging](https://developer.android.com/google/play/billing/subscriptions#in-app-messaging) to notify users
  • Network accessline 69
    - You can now use [in-app messaging](https://developer.android.com/google/play/billing/subscriptions#in-app-messaging) to notify users
  • Network accessline 78
    - New APIs for [external payments](https://developer.android.com/google/play/billing/externalpaymentlinks):
  • Network accessline 78
    - New APIs for [external payments](https://developer.android.com/google/play/billing/externalpaymentlinks):
  • Network accessline 80
    - Added classes to support external payments flow:     - [`BillingProgram.EXTERNAL_PAYMENTS`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingProgram#EXTERNAL_PAYMENTS())
  • Network accessline 80
    - Added classes to support external payments flow:     - [`BillingProgram.EXTERNAL_PAYMENTS`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingProgram#EXTERNAL_PAYMENTS())
  • Network accessline 81
    - [`BillingProgram.EXTERNAL_PAYMENTS`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingProgram#EXTERNAL_PAYMENTS())
  • Network accessline 81
    - [`BillingProgram.EXTERNAL_PAYMENTS`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingProgram#EXTERNAL_PAYMENTS())
  • Network accessline 82
    - [`EnableBillingProgramParams`](https://developer.android.com/reference/com/android/billingclient/api/EnableBillingProgramParams)
  • Network accessline 82
    - [`EnableBillingProgramParams`](https://developer.android.com/reference/com/android/billingclient/api/EnableBillingProgramParams)
  • Network accessline 83
    - [`DeveloperBillingOptionParams`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperBillingOptionParams)
  • Network accessline 83
    - [`DeveloperBillingOptionParams`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperBillingOptionParams)
  • Network accessline 84
    - [`DeveloperProvidedBillingDetails`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails)
  • Network accessline 84
    - [`DeveloperProvidedBillingDetails`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingDetails)
  • Network accessline 85
    - [`DeveloperProvidedBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingListener)
  • Network accessline 85
    - [`DeveloperProvidedBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/DeveloperProvidedBillingListener)
  • Network accessline 86
    - Added [`enableBillingProgram(EnableBillingProgramParams)`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableBillingProgram(com.android.billingclient.api.EnableBillingProgramParams)) to enab
  • Network accessline 86
    - Added [`enableBillingProgram(EnableBillingProgramParams)`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableBillingProgram(com.android.billingclient.api.EnableBillingProgramParams)) to enab
  • Network accessline 87
    - Added [`BillingFlowParams.Builder.enableDeveloperBillingOption`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#enableDeveloperBillingOption(com.android.billingclient.api.DeveloperBillingOp
  • Network accessline 87
    - Added [`BillingFlowParams.Builder.enableDeveloperBillingOption`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#enableDeveloperBillingOption(com.android.billingclient.api.DeveloperBillingOp
  • Network accessline 99
    - Fixed a bug in [`isBillingProgramAvailableAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isBillingProgramAvailableAsync(int,com.android.billingclient.api.BillingProgramAvailabilityListener)) an
  • Network accessline 99
    - Fixed a bug in [`isBillingProgramAvailableAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isBillingProgramAvailableAsync(int,com.android.billingclient.api.BillingProgramAvailabilityListener)) an
  • Network accessline 107
    - New APIs for [external content links](https://developer.android.com/google/play/billing/externalcontentlinks) and [external offers](https://developer.android.com/google/play/billing/external):
  • Network accessline 107
    - New APIs for [external content links](https://developer.android.com/google/play/billing/externalcontentlinks) and [external offers](https://developer.android.com/google/play/billing/external):
  • Network accessline 109
    - Added [`enableBillingProgram`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableBillingProgram(int)) to setup the `BillingClient` for these programs.
  • Network accessline 109
    - Added [`enableBillingProgram`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableBillingProgram(int)) to setup the `BillingClient` for these programs.
  • Network accessline 110
    - Added [`isBillingProgramAvailableAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isBillingProgramAvailableAsync(int,com.android.billingclient.api.BillingProgramAvailabilityListener)) to determin
  • Network accessline 110
    - Added [`isBillingProgramAvailableAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isBillingProgramAvailableAsync(int,com.android.billingclient.api.BillingProgramAvailabilityListener)) to determin
  • Network accessline 111
    - Added [`createBillingProgramReportingDetailsAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#createBillingProgramReportingDetailsAsync(com.android.billingclient.api.BillingProgramReportingDetails
  • Network accessline 111
    - Added [`createBillingProgramReportingDetailsAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#createBillingProgramReportingDetailsAsync(com.android.billingclient.api.BillingProgramReportingDetails
  • Network accessline 112
    - Added [`launchExternalLink`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchExternalLink(android.app.Activity,com.android.billingclient.api.LaunchExternalLinkParams,com.android.billingclient.api.
  • Network accessline 112
    - Added [`launchExternalLink`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchExternalLink(android.app.Activity,com.android.billingclient.api.LaunchExternalLinkParams,com.android.billingclient.api.
  • Network accessline 113
    - Changes to the [external offers program](https://developer.android.com/google/play/billing/external):
  • Network accessline 113
    - Changes to the [external offers program](https://developer.android.com/google/play/billing/external):
  • Network accessline 115
    - There are policy changes for the external offers program. See [program changes](https://support.google.com/googleplay/android-developer/answer/16505463) for details. To understand how to launch external offer flows with the new APIs, see 
  • Network accessline 115
    - There are policy changes for the external offers program. See [program changes](https://support.google.com/googleplay/android-developer/answer/16505463) for details. To understand how to launch external offer flows with the new APIs, see 
  • Network accessline 116
    - Deprecated the [`BillingClient.Builder.enableExternalOffer`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableExternalOffer()) API.
  • Network accessline 116
    - Deprecated the [`BillingClient.Builder.enableExternalOffer`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableExternalOffer()) API.
  • Network accessline 117
    - Deprecated the [`isExternalOfferAvailableAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isExternalOfferAvailableAsync(com.android.billingclient.api.ExternalOfferAvailabilityListener)) API.
  • Network accessline 117
    - Deprecated the [`isExternalOfferAvailableAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isExternalOfferAvailableAsync(com.android.billingclient.api.ExternalOfferAvailabilityListener)) API.
  • Network accessline 118
    - Deprecated the [`createExternalOfferReportingDetailsAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#createExternalOfferReportingDetailsAsync(com.android.billingclient.api.ExternalOfferReportingD
  • Network accessline 118
    - Deprecated the [`createExternalOfferReportingDetailsAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#createExternalOfferReportingDetailsAsync(com.android.billingclient.api.ExternalOfferReportingD
  • Network accessline 119
    - Deprecated the [`showExternalOfferInformationDialog`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showExternalOfferInformationDialog(android.app.Activity,com.android.billingclient.api.ExternalOfferI
  • Network accessline 119
    - Deprecated the [`showExternalOfferInformationDialog`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showExternalOfferInformationDialog(android.app.Activity,com.android.billingclient.api.ExternalOfferI
  • Network accessline 129
    A new parameter has been added to the   [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,com.a
  • Network accessline 129
    A new parameter has been added to the   [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,com.a
  • Network accessline 130
    [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,com.android.billingclient.api.PurchasesRespon
  • Network accessline 130
    [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,com.android.billingclient.api.PurchasesRespon
  • Network accessline 136
    The [`Purchase`](https://developer.android.com/reference/com/android/billingclient/api/Purchase) object returned in the listener will return `isSuspended() = true`
  • Network accessline 136
    The [`Purchase`](https://developer.android.com/reference/com/android/billingclient/api/Purchase) object returned in the listener will return `isSuspended() = true`
  • Network accessline 137
    for any suspended subscriptions. In this case, you shouldn't grant access   to the purchased subscription, and instead guide the user to the   [subscriptions center](https://play.google.com/store/account/subscriptions)
  • Network accessline 137
    for any suspended subscriptions. In this case, you shouldn't grant access   to the purchased subscription, and instead guide the user to the   [subscriptions center](https://play.google.com/store/account/subscriptions)
  • Network accessline 138
    to the purchased subscription, and instead guide the user to the   [subscriptions center](https://play.google.com/store/account/subscriptions)   where the user can manage their payment methods
  • Network accessline 138
    to the purchased subscription, and instead guide the user to the   [subscriptions center](https://play.google.com/store/account/subscriptions)   where the user can manage their payment methods
  • Network accessline 139
    [subscriptions center](https://play.google.com/store/account/subscriptions)
  • Network accessline 139
    [subscriptions center](https://play.google.com/store/account/subscriptions)
  • Network accessline 140
    where the user can manage their payment methods   or pause state to re-activate their subscription. - Updates to [subscriptions](https://developer.android.com/google/play/billing/subscriptions):
  • Network accessline 140
    where the user can manage their payment methods   or pause state to re-activate their subscription. - Updates to [subscriptions](https://developer.android.com/google/play/billing/subscriptions):
  • Network accessline 142
    - Updates to [subscriptions](https://developer.android.com/google/play/billing/subscriptions):
  • Network accessline 142
    - Updates to [subscriptions](https://developer.android.com/google/play/billing/subscriptions):
  • Network accessline 144
    - The [`BillingFlowParams.ProductDetailsParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.ProductDetailsParams)
  • Network accessline 144
    - The [`BillingFlowParams.ProductDetailsParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.ProductDetailsParams)
  • Network accessline 151
    - `setOldProductId`: The old product that needs to be replaced by the product in current [`ProductDetails`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetails).
  • Network accessline 151
    - `setOldProductId`: The old product that needs to be replaced by the product in current [`ProductDetails`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetails).
  • Network accessline 152
    - `setReplacementMode`: This is the item level replacement mode. The modes are essentially the same as SubscriptionUpdateParams, but the value mapping has been updated. A new replacement mode `KEEP_EXISTING` is introduced that lets you keep
  • Network accessline 152
    - `setReplacementMode`: This is the item level replacement mode. The modes are essentially the same as SubscriptionUpdateParams, but the value mapping has been updated. A new replacement mode `KEEP_EXISTING` is introduced that lets you keep
  • Network accessline 153
    - [SubscriptionUpdateParams setSubscriptionReplacementMode](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)) will be
  • Network accessline 153
    - [SubscriptionUpdateParams setSubscriptionReplacementMode](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)) will be
  • Network accessline 159
    - Enabled [pre-order APIs for one-time products](https://developer.android.com/google/play/billing/one-time-product-multi-purchase-options-offers#pre-order)
  • Network accessline 159
    - Enabled [pre-order APIs for one-time products](https://developer.android.com/google/play/billing/one-time-product-multi-purchase-options-offers#pre-order)
  • Network accessline 161
    The `ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()` API   that gets the pre-order details is now available for use. - Google Play Billing Library now supports [Kotlin version 2.2.0](https://kotlinlang.org/docs/whatsnew22.h
  • Network accessline 161
    The `ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()` API   that gets the pre-order details is now available for use. - Google Play Billing Library now supports [Kotlin version 2.2.0](https://kotlinlang.org/docs/whatsnew22.h
  • Network accessline 163
    - Google Play Billing Library now supports [Kotlin version 2.2.0](https://kotlinlang.org/docs/whatsnew22.html).
  • Network accessline 163
    - Google Play Billing Library now supports [Kotlin version 2.2.0](https://kotlinlang.org/docs/whatsnew22.html).
  • Network accessline 177
    products. This provides you flexibility in how you sell your products and   reduces the complexity of managing them. - Improved the [`queryProductDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/Billing
  • Network accessline 177
    products. This provides you flexibility in how you sell your products and   reduces the complexity of managing them. - Improved the [`queryProductDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/Billing
  • Network accessline 179
    - Improved the [`queryProductDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductDetailsAsync(com.android.billingclient.api.QueryProductDetailsParams,com.android.billingclient.api
  • Network accessline 179
    - Improved the [`queryProductDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductDetailsAsync(com.android.billingclient.api.QueryProductDetailsParams,com.android.billingclient.api
  • Network accessline 181
    Prior to PBL 8.0.0, the [`queryProductDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductDetailsAsync(com.android.billingclient.api.QueryProductDetailsParams,com.android.billingc
  • Network accessline 181
    Prior to PBL 8.0.0, the [`queryProductDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductDetailsAsync(com.android.billingclient.api.QueryProductDetailsParams,com.android.billingc
  • Network accessline 185
    that provides information about unfetched products. Note that there is a   change in the signature of the   [`ProductDetailsResponseListener.onProductDetailsResponse()`](https://developer.android.com/reference/com/android/billingclient/api/
  • Network accessline 185
    that provides information about unfetched products. Note that there is a   change in the signature of the   [`ProductDetailsResponseListener.onProductDetailsResponse()`](https://developer.android.com/reference/com/android/billingclient/api/
  • Network accessline 186
    change in the signature of the   [`ProductDetailsResponseListener.onProductDetailsResponse()`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetailsResponseListener#onProductDetailsResponse(com.android.billing
  • Network accessline 186
    change in the signature of the   [`ProductDetailsResponseListener.onProductDetailsResponse()`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetailsResponseListener#onProductDetailsResponse(com.android.billing
  • Network accessline 187
    [`ProductDetailsResponseListener.onProductDetailsResponse()`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetailsResponseListener#onProductDetailsResponse(com.android.billingclient.api.BillingResult,com.andr
  • Network accessline 187
    [`ProductDetailsResponseListener.onProductDetailsResponse()`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetailsResponseListener#onProductDetailsResponse(com.android.billingclient.api.BillingResult,com.andr
  • Network accessline 188
    requires changes in your app. For more information, see [process the   result](https://developer.android.com/google/play/billing/integrate#process-the-result). - Automatic service reconnection.
  • Network accessline 188
    requires changes in your app. For more information, see [process the   result](https://developer.android.com/google/play/billing/integrate#process-the-result). - Automatic service reconnection.
  • Network accessline 189
    result](https://developer.android.com/google/play/billing/integrate#process-the-result).
  • Network accessline 189
    result](https://developer.android.com/google/play/billing/integrate#process-the-result).
  • Network accessline 195
    the Play Billing Service automatically and eliminating the need to manually   call `startConnection()` in the event of a service disconnection.   For more information, see [Automatically Re-establish a Connection](https://developer.android.
  • Network accessline 195
    the Play Billing Service automatically and eliminating the need to manually   call `startConnection()` in the event of a service disconnection.   For more information, see [Automatically Re-establish a Connection](https://developer.android.
  • Network accessline 196
    call `startConnection()` in the event of a service disconnection.   For more information, see [Automatically Re-establish a Connection](https://developer.android.com/google/play/billing/integrate#automatic-service-reconnection). - Sub-respo
  • Network accessline 196
    call `startConnection()` in the event of a service disconnection.   For more information, see [Automatically Re-establish a Connection](https://developer.android.com/google/play/billing/integrate#automatic-service-reconnection). - Sub-respo
  • Network accessline 197
    For more information, see [Automatically Re-establish a Connection](https://developer.android.com/google/play/billing/integrate#automatic-service-reconnection).
  • Network accessline 197
    For more information, see [Automatically Re-establish a Connection](https://developer.android.com/google/play/billing/integrate#automatic-service-reconnection).
  • Network accessline 198
    - Sub-response codes for the [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclient.api.BillingFlowParams)) method.
  • Network accessline 198
    - Sub-response codes for the [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclient.api.BillingFlowParams)) method.
  • Network accessline 200
    The [BillingResult](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) returned from [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBilling
  • Network accessline 200
    The [BillingResult](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) returned from [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBilling
  • Network accessline 209
    The `queryPurchaseHistory()` method that was previously marked as   deprecated has now been removed. See [Query Purchase History](https://developer.android.com/google/play/billing/query-purchase-history) for
  • Network accessline 209
    The `queryPurchaseHistory()` method that was previously marked as   deprecated has now been removed. See [Query Purchase History](https://developer.android.com/google/play/billing/query-purchase-history) for
  • Network accessline 210
    deprecated has now been removed. See [Query Purchase History](https://developer.android.com/google/play/billing/query-purchase-history) for
  • Network accessline 210
    deprecated has now been removed. See [Query Purchase History](https://developer.android.com/google/play/billing/query-purchase-history) for
  • Network accessline 214
    The `querySkuDetailsAsync()` method that was previously marked as deprecated   has now been removed. You should use [queryProductDetailsAsync](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductD
  • Network accessline 214
    The `querySkuDetailsAsync()` method that was previously marked as deprecated   has now been removed. You should use [queryProductDetailsAsync](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductD
  • Network accessline 215
    has now been removed. You should use [queryProductDetailsAsync](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductDetailsAsync(com.android.billingclient.api.QueryProductDetailsParams,com.android
  • Network accessline 215
    has now been removed. You should use [queryProductDetailsAsync](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductDetailsAsync(com.android.billingclient.api.QueryProductDetailsParams,com.android
  • Network accessline 221
    the deprecated `enablePendingPurchases()` is functionally equivalent to   `enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())`. - Removed the overloaded `queryPurchasesAsync()` method that takes a [s
  • Network accessline 221
    the deprecated `enablePendingPurchases()` is functionally equivalent to   `enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())`. - Removed the overloaded `queryPurchasesAsync()` method that takes a [s
  • Network accessline 223
    - Removed the overloaded `queryPurchasesAsync()` method that takes a [skuType](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.SkuType).
  • Network accessline 223
    - Removed the overloaded `queryPurchasesAsync()` method that takes a [skuType](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.SkuType).
  • Network accessline 227
    deprecated has now been removed. Alternately, use   [`queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams,   PurchasesResponseListener listener)`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient
  • Network accessline 227
    deprecated has now been removed. Alternately, use   [`queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams,   PurchasesResponseListener listener)`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient
  • Network accessline 229
    PurchasesResponseListener listener)`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,com.android.billingclient.api.PurchasesResponse
  • Network accessline 229
    PurchasesResponseListener listener)`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,com.android.billingclient.api.PurchasesResponse
  • Network accessline 238
    - Fixed a bug in Play Billing Library 7.1.0 related to [testing   `BillingResult` response codes](https://developer.android.com/google/play/billing/test-response-codes).
  • Network accessline 238
    - Fixed a bug in Play Billing Library 7.1.0 related to [testing   `BillingResult` response codes](https://developer.android.com/google/play/billing/test-response-codes).
  • Network accessline 239
    `BillingResult` response codes](https://developer.android.com/google/play/billing/test-response-codes).
  • Network accessline 239
    `BillingResult` response codes](https://developer.android.com/google/play/billing/test-response-codes).
  • Network accessline 248
    - Improved thread safety related to connection status and management. - Introduced partial changes for testing [`BillingResult`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) response codes which is fu
  • Network accessline 248
    - Improved thread safety related to connection status and management. - Introduced partial changes for testing [`BillingResult`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) response codes which is fu
  • Network accessline 249
    - Introduced partial changes for testing [`BillingResult`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) response codes which is fully released in Play Billing Library 7.1.1. To test your integration u
  • Network accessline 249
    - Introduced partial changes for testing [`BillingResult`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) response codes which is fully released in Play Billing Library 7.1.1. To test your integration u
  • Network accessline 250
    response codes](https://developer.android.com/google/play/billing/test-response-codes).
  • Network accessline 250
    response codes](https://developer.android.com/google/play/billing/test-response-codes).
  • Network accessline 261
    - Added [`ProductDetails.InstallmentPlanDetails`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetails.InstallmentPlanDetails) for installment base plans that users are eligible to purchase. This API helps yo
  • Network accessline 261
    - Added [`ProductDetails.InstallmentPlanDetails`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetails.InstallmentPlanDetails) for installment base plans that users are eligible to purchase. This API helps yo
  • Network accessline 262
    - Added [`PendingPurchasesParams`](https://developer.android.com/reference/com/android/billingclient/api/PendingPurchasesParams) and
  • Network accessline 262
    - Added [`PendingPurchasesParams`](https://developer.android.com/reference/com/android/billingclient/api/PendingPurchasesParams) and
  • Network accessline 263
    [`BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablePendingPurchases(com.android.billingclient.api.PendingPurchasesParams)
  • Network accessline 263
    [`BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablePendingPurchases(com.android.billingclient.api.PendingPurchasesParams)
  • Network accessline 264
    to replace   [`BillingClient.Builder.enablePendingPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablePendingPurchases()),   which has been deprecated in this release.
  • Network accessline 264
    to replace   [`BillingClient.Builder.enablePendingPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablePendingPurchases()),   which has been deprecated in this release.
  • Network accessline 265
    [`BillingClient.Builder.enablePendingPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablePendingPurchases()),
  • Network accessline 265
    [`BillingClient.Builder.enablePendingPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablePendingPurchases()),
  • Network accessline 271
    - Use [`PendingPurchasesParams.Builder.enablePrepaidPlans()`](https://developer.android.com/reference/com/android/billingclient/api/PendingPurchasesParams.Builder#enablePrepaidPlans()) along with [`BillingClient.Builder.enablePendingPurchas
  • Network accessline 271
    - Use [`PendingPurchasesParams.Builder.enablePrepaidPlans()`](https://developer.android.com/reference/com/android/billingclient/api/PendingPurchasesParams.Builder#enablePrepaidPlans()) along with [`BillingClient.Builder.enablePendingPurchas
  • Network accessline 272
    guide](https://developer.android.com/google/play/billing/subscriptions#pending).
  • Network accessline 272
    guide](https://developer.android.com/google/play/billing/subscriptions#pending).
  • Network accessline 273
    - Added [`Purchase.PendingPurchaseUpdate`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PendingPurchaseUpdate) and [`Purchase.getPendingPurchaseUpdate()`](https://developer.android.com/reference/com/android
  • Network accessline 273
    - Added [`Purchase.PendingPurchaseUpdate`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PendingPurchaseUpdate) and [`Purchase.getPendingPurchaseUpdate()`](https://developer.android.com/reference/com/android
  • Network accessline 274
    - Removed   [`BillingClient.Builder.enableAlternativeBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableAlternativeBilling(com.android.billingclient.api.AlternativeBillingListener))
  • Network accessline 274
    - Removed   [`BillingClient.Builder.enableAlternativeBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableAlternativeBilling(com.android.billingclient.api.AlternativeBillingListener))
  • Network accessline 275
    [`BillingClient.Builder.enableAlternativeBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableAlternativeBilling(com.android.billingclient.api.AlternativeBillingListener)),
  • Network accessline 275
    [`BillingClient.Builder.enableAlternativeBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableAlternativeBilling(com.android.billingclient.api.AlternativeBillingListener)),
  • Network accessline 276
    [`AlternativeBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeBillingListener), and
  • Network accessline 276
    [`AlternativeBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeBillingListener), and
  • Network accessline 277
    [`AlternativeChoiceDetails`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeChoiceDetails).
  • Network accessline 277
    [`AlternativeChoiceDetails`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeChoiceDetails).
  • Network accessline 279
    - Developers should use [`BillingClient.Builder.enableUserChoiceBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableUserChoiceBilling(com.android.billingclient.api.UserChoiceBillingL
  • Network accessline 279
    - Developers should use [`BillingClient.Builder.enableUserChoiceBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableUserChoiceBilling(com.android.billingclient.api.UserChoiceBillingL
  • Network accessline 280
    - Removed [`BillingFlowParams.ProrationMode`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.ProrationMode),
  • Network accessline 280
    - Removed [`BillingFlowParams.ProrationMode`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.ProrationMode),
  • Network accessline 281
    [`BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setReplaceProrationMode(int)),
  • Network accessline 281
    [`BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setReplaceProrationMode(int)),
  • Network accessline 283
    [`BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setReplaceSkusProrationMode(int)).
  • Network accessline 283
    [`BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setReplaceSkusProrationMode(int)).
  • Network accessline 285
    - Developers should use [`BillingFlowParams.SubscriptionUpdateParams.ReplacementMode`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.ReplacementMode) with [`BillingFlowParam
  • Network accessline 285
    - Developers should use [`BillingFlowParams.SubscriptionUpdateParams.ReplacementMode`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.ReplacementMode) with [`BillingFlowParam
  • Network accessline 287
    [`BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken(java.lang.String
  • Network accessline 287
    [`BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken(java.lang.String
  • Network accessline 289
    - Developers should use [`BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#se
  • Network accessline 289
    - Developers should use [`BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#se
  • Network accessline 290
    - [`BillingClient.queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchaseHistoryAsync(com.android.billingclient.api.QueryPurchaseHistoryParams,com.android.billingclient
  • Network accessline 290
    - [`BillingClient.queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchaseHistoryAsync(com.android.billingclient.api.QueryPurchaseHistoryParams,com.android.billingclient
  • Network accessline 294
    - Acknowledged and pending purchases: Use [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,%20
  • Network accessline 294
    - Acknowledged and pending purchases: Use [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,%20
  • Network accessline 295
    - Consumed purchases: Developers should keep track of consumed purchases on their own servers.   - Canceled purchases: Use the [voided-purchases](https://developers.google.com/android-publisher/voided-purchases) developer API.   - For more 
  • Network accessline 295
    - Consumed purchases: Developers should keep track of consumed purchases on their own servers.   - Canceled purchases: Use the [voided-purchases](https://developers.google.com/android-publisher/voided-purchases) developer API.   - For more 
  • Network accessline 296
    - Canceled purchases: Use the [voided-purchases](https://developers.google.com/android-publisher/voided-purchases) developer API.
  • Network accessline 296
    - Canceled purchases: Use the [voided-purchases](https://developers.google.com/android-publisher/voided-purchases) developer API.
  • Network accessline 297
    - For more details, see [Query Purchase History](https://developer.android.com/google/play/billing/query-purchase-history)
  • Network accessline 297
    - For more details, see [Query Purchase History](https://developer.android.com/google/play/billing/query-purchase-history)
  • Network accessline 298
    - [`BillingFlowParams.ProductDetailsParams.setOfferToken()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.ProductDetailsParams.Builder#setOfferToken(java.lang.String))
  • Network accessline 298
    - [`BillingFlowParams.ProductDetailsParams.setOfferToken()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.ProductDetailsParams.Builder#setOfferToken(java.lang.String))
  • Network accessline 310
    - Fixed a bug in [`BillingClient.showAlternativeBillingOnlyInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showAlternativeBillingOnlyInformationDialog(android.app.Activity,%20com.and
  • Network accessline 310
    - Fixed a bug in [`BillingClient.showAlternativeBillingOnlyInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showAlternativeBillingOnlyInformationDialog(android.app.Activity,%20com.and
  • Network accessline 319
    - Added APIs to support [external offers](https://developer.android.com/google/play/billing/external)
  • Network accessline 319
    - Added APIs to support [external offers](https://developer.android.com/google/play/billing/external)
  • Network accessline 320
    - Added [`BillingClient.Builder.enableExternalOffer()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableExternalOffer()) to enable the ability to provide external offers.
  • Network accessline 320
    - Added [`BillingClient.Builder.enableExternalOffer()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableExternalOffer()) to enable the ability to provide external offers.
  • Network accessline 321
    - Added [`BillingClient.isExternalOfferAvailableAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isExternalOfferAvailableAsync(com.android.billingclient.api.ExternalOfferAvailabilityListener)) to
  • Network accessline 321
    - Added [`BillingClient.isExternalOfferAvailableAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isExternalOfferAvailableAsync(com.android.billingclient.api.ExternalOfferAvailabilityListener)) to
  • Network accessline 322
    - Added [`BillingClient.showExternalOfferInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showExternalOfferInformationDialog(android.app.Activity,%20com.android.billingclient.api.Exte
  • Network accessline 322
    - Added [`BillingClient.showExternalOfferInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showExternalOfferInformationDialog(android.app.Activity,%20com.android.billingclient.api.Exte
  • Network accessline 323
    - Added [`BillingClient.createExternalOfferReportingDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#createExternalOfferReportingDetailsAsync(com.android.billingclient.api.ExternalOfferRep
  • Network accessline 323
    - Added [`BillingClient.createExternalOfferReportingDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#createExternalOfferReportingDetailsAsync(com.android.billingclient.api.ExternalOfferRep
  • Network accessline 332
    - Added APIs to support [alternative billing only (i.e. without user choice)](https://developer.android.com/google/play/billing/alternative)
  • Network accessline 332
    - Added APIs to support [alternative billing only (i.e. without user choice)](https://developer.android.com/google/play/billing/alternative)
  • Network accessline 333
    - Added [`BillingClient.Builder.enableAlternativeBillingOnly()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableAlternativeBillingOnly()) to functionally enable the ability to offer alterna
  • Network accessline 333
    - Added [`BillingClient.Builder.enableAlternativeBillingOnly()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableAlternativeBillingOnly()) to functionally enable the ability to offer alterna
  • Network accessline 334
    - Added [`BillingClient.isAlternativeBillingOnlyAvailableAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isAlternativeBillingOnlyAvailableAsync(com.android.billingclient.api.AlternativeBillingOn
  • Network accessline 334
    - Added [`BillingClient.isAlternativeBillingOnlyAvailableAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#isAlternativeBillingOnlyAvailableAsync(com.android.billingclient.api.AlternativeBillingOn
  • Network accessline 335
    - Added [`BillingClient.showAlternativeBillingOnlyInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showAlternativeBillingOnlyInformationDialog(android.app.Activity,%20com.android.bill
  • Network accessline 335
    - Added [`BillingClient.showAlternativeBillingOnlyInformationDialog()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showAlternativeBillingOnlyInformationDialog(android.app.Activity,%20com.android.bill
  • Network accessline 336
    - Added [`BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#createAlternativeBillingOnlyReportingDetailsAsync(com.android.billingclient.ap
  • Network accessline 336
    - Added [`BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#createAlternativeBillingOnlyReportingDetailsAsync(com.android.billingclient.ap
  • Network accessline 337
    - Updated the user choice billing APIs   - Added [`UserChoiceBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/UserChoiceBillingListener) to replace [AlternativeBillingListener](https://developer.androi
  • Network accessline 337
    - Updated the user choice billing APIs   - Added [`UserChoiceBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/UserChoiceBillingListener) to replace [AlternativeBillingListener](https://developer.androi
  • Network accessline 338
    - Added [`UserChoiceBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/UserChoiceBillingListener) to replace [AlternativeBillingListener](https://developer.android.com/reference/com/android/billingclient
  • Network accessline 338
    - Added [`UserChoiceBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/UserChoiceBillingListener) to replace [AlternativeBillingListener](https://developer.android.com/reference/com/android/billingclient
  • Network accessline 339
    - Added [`UserChoiceDetails`](https://developer.android.com/reference/com/android/billingclient/api/UserChoiceDetails) to replace [`AlternativeChoiceDetails`](https://developer.android.com/reference/com/android/billingclient/api/Alternative
  • Network accessline 339
    - Added [`UserChoiceDetails`](https://developer.android.com/reference/com/android/billingclient/api/UserChoiceDetails) to replace [`AlternativeChoiceDetails`](https://developer.android.com/reference/com/android/billingclient/api/Alternative
  • Network accessline 340
    - Added [`BillingClient.Builder.enableUserChoiceBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableUserChoiceBilling(com.android.billingclient.api.UserChoiceBillingListener)) to rep
  • Network accessline 340
    - Added [`BillingClient.Builder.enableUserChoiceBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableUserChoiceBilling(com.android.billingclient.api.UserChoiceBillingListener)) to rep
  • Network accessline 341
    - Added [`BillingClient.getBillingConfigAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#getBillingConfigAsync(com.android.billingclient.api.GetBillingConfigParams,%20com.android.billingclient.ap
  • Network accessline 341
    - Added [`BillingClient.getBillingConfigAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#getBillingConfigAsync(com.android.billingclient.api.GetBillingConfigParams,%20com.android.billingclient.ap
  • Network accessline 359
    - Added new [`ReplacementMode`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.ReplacementMode)
  • Network accessline 359
    - Added new [`ReplacementMode`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.ReplacementMode)
  • Network accessline 361
    [`ProrationMode`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.ProrationMode).
  • Network accessline 361
    [`ProrationMode`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.ProrationMode).
  • Network accessline 363
    Note that `ProrationMode` is still available for backward compatibility   reasons. - Removed order ID for [`PENDING`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PENDING())
  • Network accessline 363
    Note that `ProrationMode` is still available for backward compatibility   reasons. - Removed order ID for [`PENDING`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PENDING())
  • Network accessline 364
    reasons. - Removed order ID for [`PENDING`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PENDING())   purchases.
  • Network accessline 364
    reasons. - Removed order ID for [`PENDING`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PENDING())   purchases.
  • Network accessline 365
    - Removed order ID for [`PENDING`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PENDING())
  • Network accessline 365
    - Removed order ID for [`PENDING`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PENDING())
  • Network accessline 370
    pending purchases, and for these purchases, the order ID will be populated   after the purchase is moved to the   [`PURCHASED`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PURCHASED())
  • Network accessline 370
    pending purchases, and for these purchases, the order ID will be populated   after the purchase is moved to the   [`PURCHASED`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PURCHASED())
  • Network accessline 371
    after the purchase is moved to the   [`PURCHASED`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PURCHASED())   state.
  • Network accessline 371
    after the purchase is moved to the   [`PURCHASED`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PURCHASED())   state.
  • Network accessline 372
    [`PURCHASED`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PURCHASED())
  • Network accessline 372
    [`PURCHASED`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState#PURCHASED())
  • Network accessline 377
    previously been marked as deprecated have now been removed in Play Billing   Library 6.0.0. Developers should use   [`queryPurchasesAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAs
  • Network accessline 377
    previously been marked as deprecated have now been removed in Play Billing   Library 6.0.0. Developers should use   [`queryPurchasesAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAs
  • Network accessline 378
    Library 6.0.0. Developers should use   [`queryPurchasesAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,%20com.android.billing
  • Network accessline 378
    Library 6.0.0. Developers should use   [`queryPurchasesAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,%20com.android.billing
  • Network accessline 379
    [`queryPurchasesAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,%20com.android.billingclient.api.PurchasesResponseListener))
  • Network accessline 379
    [`queryPurchasesAsync`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(com.android.billingclient.api.QueryPurchasesParams,%20com.android.billingclient.api.PurchasesResponseListener))
  • Network accessline 380
    instead of `queryPurchases`. For `launchPriceConfirmationFlow` alternatives,   see [Price changes](https://developer.android.com/google/play/billing/price-changes). - Added new network error response code.
  • Network accessline 380
    instead of `queryPurchases`. For `launchPriceConfirmationFlow` alternatives,   see [Price changes](https://developer.android.com/google/play/billing/price-changes). - Added new network error response code.
  • Network accessline 381
    see [Price changes](https://developer.android.com/google/play/billing/price-changes).
  • Network accessline 381
    see [Price changes](https://developer.android.com/google/play/billing/price-changes).
  • Network accessline 384
    A new network error response code,   [`NETWORK_ERROR`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#NETWORK_ERROR()),
  • Network accessline 384
    A new network error response code,   [`NETWORK_ERROR`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#NETWORK_ERROR()),
  • Network accessline 385
    [`NETWORK_ERROR`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#NETWORK_ERROR()),
  • Network accessline 385
    [`NETWORK_ERROR`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#NETWORK_ERROR()),
  • Network accessline 387
    an error occurs due to a network connection issue. These network connection   errors were previously reported as `SERVICE_UNAVAILABLE`. - Updated [`SERVICE_UNAVAILABLE`](https://developer.android.com/reference/com/android/billingclient/api/
  • Network accessline 387
    an error occurs due to a network connection issue. These network connection   errors were previously reported as `SERVICE_UNAVAILABLE`. - Updated [`SERVICE_UNAVAILABLE`](https://developer.android.com/reference/com/android/billingclient/api/
  • Network accessline 388
    errors were previously reported as `SERVICE_UNAVAILABLE`. - Updated [`SERVICE_UNAVAILABLE`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_UNAVAILABLE())   and
  • Network accessline 388
    errors were previously reported as `SERVICE_UNAVAILABLE`. - Updated [`SERVICE_UNAVAILABLE`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_UNAVAILABLE())   and
  • Network accessline 389
    - Updated [`SERVICE_UNAVAILABLE`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_UNAVAILABLE())
  • Network accessline 389
    - Updated [`SERVICE_UNAVAILABLE`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_UNAVAILABLE())
  • Network accessline 391
    [`SERVICE_TIMEOUT`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_TIMEOUT()).
  • Network accessline 391
    [`SERVICE_TIMEOUT`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_TIMEOUT()).
  • Network accessline 396
    The behavior does not change in earlier versions of PBL. - Removed   [`SERVICE_TIMEOUT`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_TIMEOUT()).
  • Network accessline 396
    The behavior does not change in earlier versions of PBL. - Removed   [`SERVICE_TIMEOUT`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_TIMEOUT()).
  • Network accessline 398
    [`SERVICE_TIMEOUT`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_TIMEOUT()).
  • Network accessline 398
    [`SERVICE_TIMEOUT`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#SERVICE_TIMEOUT()).
  • Network accessline 425
    - Added classes to support alternative billing flows on mobile/tablet for users in South Korea:   - [`AlternativeBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeBillingListener)
  • Network accessline 425
    - Added classes to support alternative billing flows on mobile/tablet for users in South Korea:   - [`AlternativeBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeBillingListener)
  • Network accessline 426
    - [`AlternativeBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeBillingListener)
  • Network accessline 426
    - [`AlternativeBillingListener`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeBillingListener)
  • Network accessline 427
    - [`AlternativeChoiceDetails`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeChoiceDetails)
  • Network accessline 427
    - [`AlternativeChoiceDetails`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeChoiceDetails)
  • Network accessline 428
    - [`AlternativeChoiceDetails.Product`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeChoiceDetails.Product)
  • Network accessline 428
    - [`AlternativeChoiceDetails.Product`](https://developer.android.com/reference/com/android/billingclient/api/AlternativeChoiceDetails.Product)
  • Network accessline 429
    - Added [`BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setOriginalExternalTr
  • Network accessline 429
    - Added [`BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.SubscriptionUpdateParams.Builder#setOriginalExternalTr
  • Network accessline 430
    - Added [`BillingClient.Builder.enableAlternativeBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableAlternativeBilling(com.android.billingclient.api.AlternativeBillingListener)) met
  • Network accessline 430
    - Added [`BillingClient.Builder.enableAlternativeBilling()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enableAlternativeBilling(com.android.billingclient.api.AlternativeBillingListener)) met
  • Network accessline 441
    - Added [`ProductDetails.SubscriptionOfferDetails.getOfferId()`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetails.SubscriptionOfferDetails#getOfferId()) method to retrieve the offer ID.
  • Network accessline 441
    - Added [`ProductDetails.SubscriptionOfferDetails.getOfferId()`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetails.SubscriptionOfferDetails#getOfferId()) method to retrieve the offer ID.
  • Network accessline 442
    - Added [`ProductDetails.SubscriptionOfferDetails.getBasePlanId()`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetails.SubscriptionOfferDetails#getBasePlanId()) method to retrieve the base plan ID.
  • Network accessline 442
    - Added [`ProductDetails.SubscriptionOfferDetails.getBasePlanId()`](https://developer.android.com/reference/com/android/billingclient/api/ProductDetails.SubscriptionOfferDetails#getBasePlanId()) method to retrieve the base plan ID.
  • Network accessline 454
    - Introduced a new model for subscriptions, including new entities that enable you to create multiple offers for a single subscription product. For more information, see the [migration guide](https://developer.android.com/google/play/billin
  • Network accessline 454
    - Introduced a new model for subscriptions, including new entities that enable you to create multiple offers for a single subscription product. For more information, see the [migration guide](https://developer.android.com/google/play/billin
  • Network accessline 455
    - Added [`BillingClient.queryProductDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductDetailsAsync(com.android.billingclient.api.QueryProductDetailsParams,%20com.android.billing
  • Network accessline 455
    - Added [`BillingClient.queryProductDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryProductDetailsAsync(com.android.billingclient.api.QueryProductDetailsParams,%20com.android.billing
  • Network accessline 456
    - Added `setIsOfferPersonalized()` method for EU personalized pricing disclosure requirements. To learn more about how to use this method, see [Indicate a personalized   price](https://developer.android.com/google/play/billing/integrate#per
  • Network accessline 456
    - Added `setIsOfferPersonalized()` method for EU personalized pricing disclosure requirements. To learn more about how to use this method, see [Indicate a personalized   price](https://developer.android.com/google/play/billing/integrate#per
  • Network accessline 457
    price](https://developer.android.com/google/play/billing/integrate#personalized-price).
  • Network accessline 457
    price](https://developer.android.com/google/play/billing/integrate#personalized-price).
  • Network accessline 458
    - Removed `queryPurchases()`, which was previously deprecated and replaced by queryPurchasesAsync introduced in Google Play Billing Library 4.0.0. - `launchPriceChangeFlow` has been deprecated and will be removed in a future release. To lea
  • Network accessline 458
    - Removed `queryPurchases()`, which was previously deprecated and replaced by queryPurchasesAsync introduced in Google Play Billing Library 4.0.0. - `launchPriceChangeFlow` has been deprecated and will be removed in a future release. To lea
  • Network accessline 459
    - `launchPriceChangeFlow` has been deprecated and will be removed in a future release. To learn more about alternatives, see [Launch a price change   confirmation flow](https://developer.android.com/google/play/billing/price-changes). - Rem
  • Network accessline 459
    - `launchPriceChangeFlow` has been deprecated and will be removed in a future release. To learn more about alternatives, see [Launch a price change   confirmation flow](https://developer.android.com/google/play/billing/price-changes). - Rem
  • Network accessline 460
    confirmation flow](https://developer.android.com/google/play/billing/price-changes).
  • Network accessline 460
    confirmation flow](https://developer.android.com/google/play/billing/price-changes).
  • Network accessline 461
    - Removed [`setVrPurchaseFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setVrPurchaseFlow(boolean)), which was previously used when instantiating a purchase flow. In previous version
  • Network accessline 461
    - Removed [`setVrPurchaseFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setVrPurchaseFlow(boolean)), which was previously used when instantiating a purchase flow. In previous version
  • Network accessline 472
    - Added [`BillingClient.showInAppMessages()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showInAppMessages(android.app.Activity,%20com.android.billingclient.api.InAppMessageParams,%20com.android.bill
  • Network accessline 472
    - Added [`BillingClient.showInAppMessages()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#showInAppMessages(android.app.Activity,%20com.android.billingclient.api.InAppMessageParams,%20com.android.bill
  • Network accessline 473
    declines](https://developer.android.com/google/play/billing/subscriptions#payment-declines).
  • Network accessline 473
    declines](https://developer.android.com/google/play/billing/subscriptions#payment-declines).
  • Network accessline 482
    - Added   [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(java.lang.String,%20com.android.billingclient.api.PurchasesResponseListener))
  • Network accessline 482
    - Added   [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(java.lang.String,%20com.android.billingclient.api.PurchasesResponseListener))
  • Network accessline 483
    [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(java.lang.String,%20com.android.billingclient.api.PurchasesResponseListener))
  • Network accessline 483
    [`BillingClient.queryPurchasesAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchasesAsync(java.lang.String,%20com.android.billingclient.api.PurchasesResponseListener))
  • Network accessline 484
    to replace   [`BillingClient.queryPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchases(java.lang.String))   which will be removed in a future release.
  • Network accessline 484
    to replace   [`BillingClient.queryPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchases(java.lang.String))   which will be removed in a future release.
  • Network accessline 485
    [`BillingClient.queryPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchases(java.lang.String))
  • Network accessline 485
    [`BillingClient.queryPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchases(java.lang.String))
  • Network accessline 488
    - Added new subscription replacement mode   [`IMMEDIATE_AND_CHARGE_FULL_PRICE`](https://developer.android.com/google/play/billing/subscriptions#replacement-modes).
  • Network accessline 488
    - Added new subscription replacement mode   [`IMMEDIATE_AND_CHARGE_FULL_PRICE`](https://developer.android.com/google/play/billing/subscriptions#replacement-modes).
  • Network accessline 489
    [`IMMEDIATE_AND_CHARGE_FULL_PRICE`](https://developer.android.com/google/play/billing/subscriptions#replacement-modes).
  • Network accessline 489
    [`IMMEDIATE_AND_CHARGE_FULL_PRICE`](https://developer.android.com/google/play/billing/subscriptions#replacement-modes).
  • Network accessline 491
    - Added   [`BillingClient.getConnectionState()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#getConnectionState())
  • Network accessline 491
    - Added   [`BillingClient.getConnectionState()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#getConnectionState())
  • Network accessline 492
    [`BillingClient.getConnectionState()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#getConnectionState())
  • Network accessline 492
    [`BillingClient.getConnectionState()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#getConnectionState())
  • Network accessline 498
    - Added   [`BillingFlowParams.Builder.setSubscriptionUpdateParams()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setSubscriptionUpdateParams(com.android.billingclient.api.BillingFlowParam
  • Network accessline 498
    - Added   [`BillingFlowParams.Builder.setSubscriptionUpdateParams()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setSubscriptionUpdateParams(com.android.billingclient.api.BillingFlowParam
  • Network accessline 499
    [`BillingFlowParams.Builder.setSubscriptionUpdateParams()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setSubscriptionUpdateParams(com.android.billingclient.api.BillingFlowParams.Subscrip
  • Network accessline 499
    [`BillingFlowParams.Builder.setSubscriptionUpdateParams()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setSubscriptionUpdateParams(com.android.billingclient.api.BillingFlowParams.Subscrip
  • Network accessline 506
    - Added   [`Purchase.getQuantity()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getQuantity())
  • Network accessline 506
    - Added   [`Purchase.getQuantity()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getQuantity())
  • Network accessline 507
    [`Purchase.getQuantity()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getQuantity())
  • Network accessline 507
    [`Purchase.getQuantity()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getQuantity())
  • Network accessline 509
    [`PurchaseHistoryRecord.getQuantity()`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord#getQuantity()).
  • Network accessline 509
    [`PurchaseHistoryRecord.getQuantity()`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord#getQuantity()).
  • Network accessline 511
    - Added   [`Purchase#getSkus()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getSkus())
  • Network accessline 511
    - Added   [`Purchase#getSkus()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getSkus())
  • Network accessline 512
    [`Purchase#getSkus()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getSkus())
  • Network accessline 512
    [`Purchase#getSkus()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getSkus())
  • Network accessline 513
    and   [`PurchaseHistoryRecord#getSkus()`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord#getSkus()).   These replace `Purchase#getSku` and `PurchaseHistoryRecord#getSku` which
  • Network accessline 513
    and   [`PurchaseHistoryRecord#getSkus()`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord#getSkus()).   These replace `Purchase#getSku` and `PurchaseHistoryRecord#getSku` which
  • Network accessline 514
    [`PurchaseHistoryRecord#getSkus()`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord#getSkus()).
  • Network accessline 514
    [`PurchaseHistoryRecord#getSkus()`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord#getSkus()).
  • Network accessline 528
    - Fix memory leak when [`endConnection()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#endConnection()) is called.
  • Network accessline 528
    - Fix memory leak when [`endConnection()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#endConnection()) is called.
  • Network accessline 529
    - Fix issue when the Google Play Billing Library is used by apps which use the single task launch mode. A [`onPurchasesUpdated()`](https://developer.android.com/reference/com/android/billingclient/api/PurchasesUpdatedListener#onpurchasesupd
  • Network accessline 529
    - Fix issue when the Google Play Billing Library is used by apps which use the single task launch mode. A [`onPurchasesUpdated()`](https://developer.android.com/reference/com/android/billingclient/api/PurchasesUpdatedListener#onpurchasesupd
  • Network accessline 570
    - [`SkuDetails.getIntroductoryPriceCycles()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getIntroductoryPriceCycles()) now returns `int` instead of `String`.
  • Network accessline 570
    - [`SkuDetails.getIntroductoryPriceCycles()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getIntroductoryPriceCycles()) now returns `int` instead of `String`.
  • Network accessline 586
    of this update, the developer payload functionality has been deprecated and will be removed in a future release. For more information, including recommended alternatives, see [Developer payload](https://developer.android.com/google/play/bil
  • Network accessline 586
    of this update, the developer payload functionality has been deprecated and will be removed in a future release. For more information, including recommended alternatives, see [Developer payload](https://developer.android.com/google/play/bil
  • Network accessline 588
    alternatives, see [Developer payload](https://developer.android.com/google/play/billing/developer-payload).
  • Network accessline 588
    alternatives, see [Developer payload](https://developer.android.com/google/play/billing/developer-payload).
  • Network accessline 598
    To learn more, see [Use Google Play Billing with Unity](https://developer.android.com/google/play/billing/unity).
  • Network accessline 598
    To learn more, see [Use Google Play Billing with Unity](https://developer.android.com/google/play/billing/unity).
  • Network accessline 599
    Unity](https://developer.android.com/google/play/billing/unity).
  • Network accessline 599
    Unity](https://developer.android.com/google/play/billing/unity).
  • Network accessline 603
    - Java Google Play Billing Library   - In [`AcknowledgePurchaseParams`](https://developer.android.com/reference/com/android/billingclient/api/AcknowledgePurchaseParams), deprecated [`setDeveloperPayload()`](https://developer.android.com/ref
  • Network accessline 603
    - Java Google Play Billing Library   - In [`AcknowledgePurchaseParams`](https://developer.android.com/reference/com/android/billingclient/api/AcknowledgePurchaseParams), deprecated [`setDeveloperPayload()`](https://developer.android.com/ref
  • Network accessline 604
    - In [`AcknowledgePurchaseParams`](https://developer.android.com/reference/com/android/billingclient/api/AcknowledgePurchaseParams), deprecated [`setDeveloperPayload()`](https://developer.android.com/reference/com/android/billingclient/api/
  • Network accessline 604
    - In [`AcknowledgePurchaseParams`](https://developer.android.com/reference/com/android/billingclient/api/AcknowledgePurchaseParams), deprecated [`setDeveloperPayload()`](https://developer.android.com/reference/com/android/billingclient/api/
  • Network accessline 605
    - In [`ConsumeParams`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeParams), deprecated [`setDeveloperPayload()`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeParams.Builder#se
  • Network accessline 605
    - In [`ConsumeParams`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeParams), deprecated [`setDeveloperPayload()`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeParams.Builder#se
  • Network accessline 606
    - In [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder), renamed [`setAccountId()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.
  • Network accessline 606
    - In [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder), renamed [`setAccountId()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.
  • Network accessline 607
    - In `BillingFlowParams`, added [`setObfuscatedProfileId()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid) which works similarly to [`setObfuscatedAccountId()`](https
  • Network accessline 607
    - In `BillingFlowParams`, added [`setObfuscatedProfileId()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid) which works similarly to [`setObfuscatedAccountId()`](https
  • Network accessline 608
    alternatives](https://developer.android.com/google/play/billing/developer-payload).
  • Network accessline 608
    alternatives](https://developer.android.com/google/play/billing/developer-payload).
  • Network accessline 609
    - In [`Purchase`](https://developer.android.com/reference/com/android/billingclient/api/Purchase), added the [`getAccountIdentifiers()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getAccountIdentifiers())
  • Network accessline 609
    - In [`Purchase`](https://developer.android.com/reference/com/android/billingclient/api/Purchase), added the [`getAccountIdentifiers()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getAccountIdentifiers())
  • Network accessline 610
    - In [`BillingClient`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient), the [`loadRewardedSku()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#loadRewardedSku(com.a
  • Network accessline 610
    - In [`BillingClient`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient), the [`loadRewardedSku()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#loadRewardedSku(com.a
  • Network accessline 616
    API alternatives for Kotlin consumption, featuring better null-safety and coroutines. For code examples, see [Use the Google Play Billing Library](https://developer.android.com/google/play/billing/billing_library_overview).
  • Network accessline 616
    API alternatives for Kotlin consumption, featuring better null-safety and coroutines. For code examples, see [Use the Google Play Billing Library](https://developer.android.com/google/play/billing/billing_library_overview).
  • Network accessline 618
    Library](https://developer.android.com/google/play/billing/billing_library_overview).
  • Network accessline 618
    Library](https://developer.android.com/google/play/billing/billing_library_overview).
  • Network accessline 624
    - In [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams), deprecated `setOldSku(String oldSku)` and replaced with `setOldSku(String
  • Network accessline 624
    - In [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams), deprecated `setOldSku(String oldSku)` and replaced with `setOldSku(String
  • Network accessline 669
    you don't acknowledge a purchase within three days, the user automatically receives a refund, and Google Play revokes the purchase. For [pending transactions](https://developer.android.com/google/play/billing/release-notes#2_0_pending) (new
  • Network accessline 669
    you don't acknowledge a purchase within three days, the user automatically receives a refund, and Google Play revokes the purchase. For [pending transactions](https://developer.android.com/google/play/billing/release-notes#2_0_pending) (new
  • Network accessline 670
    receives a refund, and Google Play revokes the purchase. For [pending transactions](https://developer.android.com/google/play/billing/release-notes#2_0_pending) (new in version 2.0), the three-day window starts when the purchase has moved t
  • Network accessline 670
    receives a refund, and Google Play revokes the purchase. For [pending transactions](https://developer.android.com/google/play/billing/release-notes#2_0_pending) (new in version 2.0), the three-day window starts when the purchase has moved t
  • Network accessline 671
    transactions](https://developer.android.com/google/play/billing/release-notes#2_0_pending) (new in version 2.0), the three-day window starts
  • Network accessline 671
    transactions](https://developer.android.com/google/play/billing/release-notes#2_0_pending) (new in version 2.0), the three-day window starts
  • Network accessline 681
    The `Purchase` object now includes an [`isAcknowledged()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#isacknowledged)
  • Network accessline 681
    The `Purchase` object now includes an [`isAcknowledged()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#isacknowledged)
  • Network accessline 682
    [`isAcknowledged()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#isacknowledged)
  • Network accessline 682
    [`isAcknowledged()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#isacknowledged)
  • Network accessline 683
    method that indicates whether a purchase has been acknowledged. In addition, the Google Play Developer API includes acknowledgement boolean values for both [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purch
  • Network accessline 683
    method that indicates whether a purchase has been acknowledged. In addition, the Google Play Developer API includes acknowledgement boolean values for both [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purch
  • Network accessline 684
    Google Play Developer API includes acknowledgement boolean values for both [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purchases/products) and
  • Network accessline 684
    Google Play Developer API includes acknowledgement boolean values for both [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purchases/products) and
  • Network accessline 685
    [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purchases/products)
  • Network accessline 685
    [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purchases/products)
  • Network accessline 686
    and [`Purchases.subscriptions`](https://developers.google.com/android-publisher/api-ref/purchases/subscriptions). Before acknowledging a purchase, be sure to use these methods to determine if
  • Network accessline 686
    and [`Purchases.subscriptions`](https://developers.google.com/android-publisher/api-ref/purchases/subscriptions). Before acknowledging a purchase, be sure to use these methods to determine if
  • Network accessline 687
    [`Purchases.subscriptions`](https://developers.google.com/android-publisher/api-ref/purchases/subscriptions).
  • Network accessline 687
    [`Purchases.subscriptions`](https://developers.google.com/android-publisher/api-ref/purchases/subscriptions).
  • Network accessline 699
    The previously-deprecated `BillingFlowParams#setSku()` method has been removed in this release. Before rendering products in a purchase flow, you must now call [`BillingClient.querySkuDetailsAsync()`](https://developer.android.com/reference
  • Network accessline 699
    The previously-deprecated `BillingFlowParams#setSku()` method has been removed in this release. Before rendering products in a purchase flow, you must now call [`BillingClient.querySkuDetailsAsync()`](https://developer.android.com/reference
  • Network accessline 700
    in this release. Before rendering products in a purchase flow, you must now call [`BillingClient.querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryskudetailsasync), passing the
  • Network accessline 700
    in this release. Before rendering products in a purchase flow, you must now call [`BillingClient.querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryskudetailsasync), passing the
  • Network accessline 701
    [`BillingClient.querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryskudetailsasync),
  • Network accessline 701
    [`BillingClient.querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryskudetailsasync),
  • Network accessline 702
    passing the resulting [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails) object to [`BillingFlowParams.Builder.setSkuDetails()`](https://developer.android.com/reference/com/android/billingclient
  • Network accessline 702
    passing the resulting [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails) object to [`BillingFlowParams.Builder.setSkuDetails()`](https://developer.android.com/reference/com/android/billingclient
  • Network accessline 703
    [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails) object to
  • Network accessline 703
    [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails) object to
  • Network accessline 704
    [`BillingFlowParams.Builder.setSkuDetails()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setskudetails).
  • Network accessline 704
    [`BillingFlowParams.Builder.setSkuDetails()`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setskudetails).
  • Network accessline 709
    For code examples, see [Use the Google Play Billing Library](https://developer.android.com/google/play/billing/billing_library_overview).
  • Network accessline 709
    For code examples, see [Use the Google Play Billing Library](https://developer.android.com/google/play/billing/billing_library_overview).
  • Network accessline 710
    Library](https://developer.android.com/google/play/billing/billing_library_overview).
  • Network accessline 710
    Library](https://developer.android.com/google/play/billing/billing_library_overview).
  • Network accessline 717
    is acknowledged or consumed. This is unlike developer payload in AIDL, where the payload could be specified when launching the purchase flow. Because purchases can now be initiated [from outside of your app](https://developer.android.com/go
  • Network accessline 717
    is acknowledged or consumed. This is unlike developer payload in AIDL, where the payload could be specified when launching the purchase flow. Because purchases can now be initiated [from outside of your app](https://developer.android.com/go
  • Network accessline 718
    payload could be specified when launching the purchase flow. Because purchases can now be initiated [from outside of your app](https://developer.android.com/google/play/billing/release-notes#2_0_acknowledge), this change ensures that you al
  • Network accessline 718
    payload could be specified when launching the purchase flow. Because purchases can now be initiated [from outside of your app](https://developer.android.com/google/play/billing/release-notes#2_0_acknowledge), this change ensures that you al
  • Network accessline 719
    can now be initiated [from outside of your app](https://developer.android.com/google/play/billing/release-notes#2_0_acknowledge), this change
  • Network accessline 719
    can now be initiated [from outside of your app](https://developer.android.com/google/play/billing/release-notes#2_0_acknowledge), this change
  • Network accessline 722
    To access the payload in the new library, `Purchase` objects now include a [`getDeveloperPayload()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getdeveloperpayload)
  • Network accessline 722
    To access the payload in the new library, `Purchase` objects now include a [`getDeveloperPayload()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getdeveloperpayload)
  • Network accessline 723
    [`getDeveloperPayload()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getdeveloperpayload)
  • Network accessline 723
    [`getDeveloperPayload()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getdeveloperpayload)
  • Network accessline 737
    [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails) contains two
  • Network accessline 737
    [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails) contains two
  • Network accessline 740
    - [`getOriginalPriceAmountMicros()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getOriginalPriceAmountMicros())
  • Network accessline 740
    - [`getOriginalPriceAmountMicros()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getOriginalPriceAmountMicros())
  • Network accessline 741
    - returns the unformatted original price of the SKU before discount. - [`getOriginalPrice()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getOriginalPrice())   - returns the original price with additiona
  • Network accessline 741
    - returns the unformatted original price of the SKU before discount. - [`getOriginalPrice()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getOriginalPrice())   - returns the original price with additiona
  • Network accessline 742
    - [`getOriginalPrice()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getOriginalPrice())
  • Network accessline 742
    - [`getOriginalPrice()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getOriginalPrice())
  • Network accessline 754
    To enable pending purchases, call [`enablePendingPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablependingpurchases)
  • Network accessline 754
    To enable pending purchases, call [`enablePendingPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablependingpurchases)
  • Network accessline 755
    [`enablePendingPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablependingpurchases)
  • Network accessline 755
    [`enablePendingPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder#enablependingpurchases)
  • Network accessline 758
    Use [`Purchase.getPurchaseState()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getpurchasestate)
  • Network accessline 758
    Use [`Purchase.getPurchaseState()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getpurchasestate)
  • Network accessline 759
    [`Purchase.getPurchaseState()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getpurchasestate)
  • Network accessline 759
    [`Purchase.getPurchaseState()`](https://developer.android.com/reference/com/android/billingclient/api/Purchase#getpurchasestate)
  • Network accessline 764
    1. When starting your app, call [`BillingClient.queryPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querypurchases) to retrieve the list of unconsumed products associated with the user.
  • Network accessline 764
    1. When starting your app, call [`BillingClient.queryPurchases()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querypurchases) to retrieve the list of unconsumed products associated with the user.
  • Network accessline 766
    3. Implement the [`onPurchasesUpdated()`](https://developer.android.com/reference/com/android/billingclient/api/PurchasesUpdatedListener#onpurchasesupdated) method to respond to changes to `Purchase` objects.
  • Network accessline 766
    3. Implement the [`onPurchasesUpdated()`](https://developer.android.com/reference/com/android/billingclient/api/PurchasesUpdatedListener#onpurchasesupdated) method to respond to changes to `Purchase` objects.
  • Network accessline 768
    In addition, the Google Play Developer API includes a `PENDING` state for [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purchases/products).
  • Network accessline 768
    In addition, the Google Play Developer API includes a `PENDING` state for [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purchases/products).
  • Network accessline 769
    [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purchases/products).
  • Network accessline 769
    [`Purchases.products`](https://developers.google.com/android-publisher/api-ref/purchases/products).
  • Network accessline 791
    [`consumeAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#consumeasync)
  • Network accessline 791
    [`consumeAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#consumeasync)
  • Network accessline 792
    now takes a [`ConsumeParams`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeParams) object instead of a `purchaseToken`. `ConsumeParams` contains the `purchaseToken` as
  • Network accessline 792
    now takes a [`ConsumeParams`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeParams) object instead of a `purchaseToken`. `ConsumeParams` contains the `purchaseToken` as
  • Network accessline 793
    [`ConsumeParams`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeParams) object
  • Network accessline 793
    [`ConsumeParams`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeParams) object
  • Network accessline 801
    To minimize confusion, [`queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchaseHistoryAsync(java.lang.String,%20com.android.billingclient.api.PurchaseHistoryResponseLi
  • Network accessline 801
    To minimize confusion, [`queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchaseHistoryAsync(java.lang.String,%20com.android.billingclient.api.PurchaseHistoryResponseLi
  • Network accessline 802
    [`queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchaseHistoryAsync(java.lang.String,%20com.android.billingclient.api.PurchaseHistoryResponseListener))
  • Network accessline 802
    [`queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#queryPurchaseHistoryAsync(java.lang.String,%20com.android.billingclient.api.PurchaseHistoryResponseListener))
  • Network accessline 803
    now returns a [`PurchaseHistoryRecord`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord) object instead of a `Purchase` object. The `PurchaseHistoryRecord` object is the
  • Network accessline 803
    now returns a [`PurchaseHistoryRecord`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord) object instead of a `Purchase` object. The `PurchaseHistoryRecord` object is the
  • Network accessline 804
    [`PurchaseHistoryRecord`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord)
  • Network accessline 804
    [`PurchaseHistoryRecord`](https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord)
  • Network accessline 814
    APIs that previously returned a `BillingResponse` integer value now return a [`BillingResult`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult)
  • Network accessline 814
    APIs that previously returned a `BillingResponse` integer value now return a [`BillingResult`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult)
  • Network accessline 815
    [`BillingResult`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult)
  • Network accessline 815
    [`BillingResult`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult)
  • Network accessline 822
    - [`SkuDetails.getIntroductoryPriceAmountMicros()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getIntroductoryPriceAmountMicros()) now returns a `long` instead of a `String`.
  • Network accessline 822
    - [`SkuDetails.getIntroductoryPriceAmountMicros()`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getIntroductoryPriceAmountMicros()) now returns a `long` instead of a `String`.
  • Network accessline 845
    - Added support for [rewarded   products](https://developer.android.com/google/play/billing/billing_rewarded_products). For more information on monetization options, see [Add rewarded-product-specific
  • Network accessline 845
    - Added support for [rewarded   products](https://developer.android.com/google/play/billing/billing_rewarded_products). For more information on monetization options, see [Add rewarded-product-specific
  • Network accessline 846
    products](https://developer.android.com/google/play/billing/billing_rewarded_products). For more information on monetization options, see [Add rewarded-product-specific
  • Network accessline 846
    products](https://developer.android.com/google/play/billing/billing_rewarded_products). For more information on monetization options, see [Add rewarded-product-specific
  • Network accessline 847
    features](https://developer.android.com/distribute/best-practices/earn/monetization-options).
  • Network accessline 847
    features](https://developer.android.com/distribute/best-practices/earn/monetization-options).
  • Network accessline 866
    - The Google Play Billing Library is now licensed under the [Android Software   Development Kit License Agreement](https://developer.android.com/studio/terms).
  • Network accessline 866
    - The Google Play Billing Library is now licensed under the [Android Software   Development Kit License Agreement](https://developer.android.com/studio/terms).
  • Network accessline 867
    Development Kit License Agreement](https://developer.android.com/studio/terms).
  • Network accessline 867
    Development Kit License Agreement](https://developer.android.com/studio/terms).
  • Network accessline 919
    information, asking users to accept the new price. This flow returns a response code of type [`BillingClient.BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode).
  • Network accessline 919
    information, asking users to accept the new price. This flow returns a response code of type [`BillingClient.BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode).
  • Network accessline 921
    [`BillingClient.BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode).
  • Network accessline 921
    [`BillingClient.BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode).
  • Network accessline 926
    mode, `DEFERRED`. This mode updates the user's subscription when it next renews. To learn more about how to set this proration mode, see [Set proration mode](https://developer.android.com/google/play/billing/subscriptions#replacement-modes)
  • Network accessline 926
    mode, `DEFERRED`. This mode updates the user's subscription when it next renews. To learn more about how to set this proration mode, see [Set proration mode](https://developer.android.com/google/play/billing/subscriptions#replacement-modes)
  • Network accessline 928
    mode](https://developer.android.com/google/play/billing/subscriptions#replacement-modes).
  • Network accessline 928
    mode](https://developer.android.com/google/play/billing/subscriptions#replacement-modes).
  • Network accessline 940
    deprecated. Instead, use the `setSkuDetails()` method, as shown in the following code snippet. The object passed into `setSkuDetails()` object comes from the [`querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/bil
  • Network accessline 940
    deprecated. Instead, use the `setSkuDetails()` method, as shown in the following code snippet. The object passed into `setSkuDetails()` object comes from the [`querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/bil
  • Network accessline 941
    code snippet. The object passed into `setSkuDetails()` object comes from the [`querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querySkuDetailsAsync(com.android.billingclient.api.S
  • Network accessline 941
    code snippet. The object passed into `setSkuDetails()` object comes from the [`querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querySkuDetailsAsync(com.android.billingclient.api.S
  • Network accessline 942
    [`querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querySkuDetailsAsync(com.android.billingclient.api.SkuDetailsParams,%20com.android.billingclient.api.SkuDetailsResponseListener))
  • Network accessline 942
    [`querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querySkuDetailsAsync(com.android.billingclient.api.SkuDetailsParams,%20com.android.billingclient.api.SkuDetailsResponseListener))
  • Network accessline 1007
    - Added support to specify a proration mode in [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams) when upgrading/downgrading an existing subscription.
  • Network accessline 1007
    - Added support to specify a proration mode in [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams) when upgrading/downgrading an existing subscription.
  • Network accessline 1008
    - The `replaceSkusProration` boolean flag in [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams) is no longer supported. Use `replaceSkusProrationMode` instead.
  • Network accessline 1008
    - The `replaceSkusProration` boolean flag in [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams) is no longer supported. Use `replaceSkusProrationMode` instead.
  • Network accessline 1009
    - [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclient.api.BillingFlowParams)) now triggers a callback for failed respon
  • Network accessline 1009
    - [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclient.api.BillingFlowParams)) now triggers a callback for failed respon
  • Network accessline 1016
    #### Developers can set `replaceSkusProrationMode` in [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams) class
  • Network accessline 1016
    #### Developers can set `replaceSkusProrationMode` in [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams) class
  • Network accessline 1056
    ### `replaceSkusProration` is no longer supported in [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.html) class
  • Network accessline 1056
    ### `replaceSkusProration` is no longer supported in [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.html) class
  • Network accessline 1063
    ### [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#launchBillingFlow(android.app.Activity,%20com.android.billingclient.api.BillingFlowParams)) now triggers a callback for fai
  • Network accessline 1063
    ### [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#launchBillingFlow(android.app.Activity,%20com.android.billingclient.api.BillingFlowParams)) now triggers a callback for fai
  • Network accessline 1065
    The Billing Library will always trigger the [`PurhcasesUpdatedListener`](https://developer.android.com/reference/com/android/billingclient/api/PurchasesUpdatedListener)
  • Network accessline 1065
    The Billing Library will always trigger the [`PurhcasesUpdatedListener`](https://developer.android.com/reference/com/android/billingclient/api/PurchasesUpdatedListener)
  • Network accessline 1066
    [`PurhcasesUpdatedListener`](https://developer.android.com/reference/com/android/billingclient/api/PurchasesUpdatedListener)
  • Network accessline 1066
    [`PurhcasesUpdatedListener`](https://developer.android.com/reference/com/android/billingclient/api/PurchasesUpdatedListener)
  • Network accessline 1067
    callback and return a [`BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) asynchronously. The synchronous return value of
  • Network accessline 1067
    callback and return a [`BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) asynchronously. The synchronous return value of
  • Network accessline 1068
    [`BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult)
  • Network accessline 1068
    [`BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult)
  • Network accessline 1069
    asynchronously. The synchronous return value of [`BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) is kept as well.
  • Network accessline 1069
    asynchronously. The synchronous return value of [`BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult) is kept as well.
  • Network accessline 1070
    [`BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult)
  • Network accessline 1070
    [`BillingResponse`](https://developer.android.com/reference/com/android/billingclient/api/BillingResult)
  • Network accessline 1075
    - Properly exits early in async methods when service is disconnected. - [`Builder`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder) param objects no longer mutates built objects.
  • Network accessline 1075
    - Properly exits early in async methods when service is disconnected. - [`Builder`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder) param objects no longer mutates built objects.
  • Network accessline 1076
    - [`Builder`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder) param objects no longer mutates built objects.
  • Network accessline 1076
    - [`Builder`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder) param objects no longer mutates built objects.
  • Network accessline 1077
    - Issue [68087141](https://issuetracker.google.com/issues/68087141): [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclien
  • Network accessline 1077
    - Issue [68087141](https://issuetracker.google.com/issues/68087141): [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclien
  • Network accessline 1079
    ## Google Play Billing Library 1.0 Release (2017-09-19, [Announcement](https://android-developers.googleblog.com/2017/09/google-play-billing-library-10-released.html))
  • Network accessline 1079
    ## Google Play Billing Library 1.0 Release (2017-09-19, [Announcement](https://android-developers.googleblog.com/2017/09/google-play-billing-library-10-released.html))
  • Network accessline 1086
    - Embedded billing permission inside library's manifest. It's not necessary to add the `com.android.vending.BILLING` permission inside Android manifest anymore. - New builder added to [`BillingClient.Builder`](https://developer.android.com/
  • Network accessline 1086
    - Embedded billing permission inside library's manifest. It's not necessary to add the `com.android.vending.BILLING` permission inside Android manifest anymore. - New builder added to [`BillingClient.Builder`](https://developer.android.com/
  • Network accessline 1087
    - New builder added to [`BillingClient.Builder`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder.html) class.
  • Network accessline 1087
    - New builder added to [`BillingClient.Builder`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder.html) class.
  • Network accessline 1088
    - Introduced builder pattern for [`SkuDetailsParams`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetailsParams.html) class to be used on methods to query SKUs.
  • Network accessline 1088
    - Introduced builder pattern for [`SkuDetailsParams`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetailsParams.html) class to be used on methods to query SKUs.
  • Network accessline 1098
    [`BillingClient.Builder`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder.html)
  • Network accessline 1098
    [`BillingClient.Builder`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.Builder.html)
  • Network accessline 1115
    To initiate the billing flow for a purchase or subscription, the [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclient.ap
  • Network accessline 1115
    To initiate the billing flow for a purchase or subscription, the [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclient.ap
  • Network accessline 1116
    [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclient.api.BillingFlowParams)) method receives a
  • Network accessline 1116
    [`launchBillingFlow()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient#launchBillingFlow(android.app.Activity,com.android.billingclient.api.BillingFlowParams)) method receives a
  • Network accessline 1117
    [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.html)
  • Network accessline 1117
    [`BillingFlowParams`](https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.html)
  • Network accessline 1146
    Arguments for [`queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#queryPurchaseHistoryAsync(java.lang.String,%0Acom.android.billingclient.api.PurchaseHistoryResponseListen
  • Network accessline 1146
    Arguments for [`queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#queryPurchaseHistoryAsync(java.lang.String,%0Acom.android.billingclient.api.PurchaseHistoryResponseListen
  • Network accessline 1147
    [`queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#queryPurchaseHistoryAsync(java.lang.String,%0Acom.android.billingclient.api.PurchaseHistoryResponseListener)) and
  • Network accessline 1147
    [`queryPurchaseHistoryAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#queryPurchaseHistoryAsync(java.lang.String,%0Acom.android.billingclient.api.PurchaseHistoryResponseListener)) and
  • Network accessline 1148
    [`querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#querySkuDetailsAsync(com.android.billingclient.api.SkuDetailsParams,%0Acom.android.billingclient.api.SkuDetailsResponseListe
  • Network accessline 1148
    [`querySkuDetailsAsync()`](https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#querySkuDetailsAsync(com.android.billingclient.api.SkuDetailsParams,%0Acom.android.billingclient.api.SkuDetailsResponseListe
  • Network accessline 1171
    The result is now returned via result code and a list of [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails.html)
  • Network accessline 1171
    The result is now returned via result code and a list of [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails.html)
  • Network accessline 1172
    [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails.html)
  • Network accessline 1172
    [`SkuDetails`](https://developer.android.com/reference/com/android/billingclient/api/SkuDetails.html)
  • Network accessline 1190
    The order of arguments for [`onConsumeResponse`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeResponseListener#onConsumeResponse(com.android.billingclient.api.BillingResult,java.lang.String)) from the
  • Network accessline 1190
    The order of arguments for [`onConsumeResponse`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeResponseListener#onConsumeResponse(com.android.billingclient.api.BillingResult,java.lang.String)) from the
  • Network accessline 1191
    [`onConsumeResponse`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeResponseListener#onConsumeResponse(com.android.billingclient.api.BillingResult,java.lang.String)) from the
  • Network accessline 1191
    [`onConsumeResponse`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeResponseListener#onConsumeResponse(com.android.billingclient.api.BillingResult,java.lang.String)) from the
  • Network accessline 1192
    [`ConsumeResponseListener`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeResponseListener.html)
  • Network accessline 1192
    [`ConsumeResponseListener`](https://developer.android.com/reference/com/android/billingclient/api/ConsumeResponseListener.html)
  • Network accessline 1209
    [`PurchaseResult`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchasesResult.html)
  • Network accessline 1209
    [`PurchaseResult`](https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchasesResult.html)
  • Network accessline 1226
    - [No response code in PURCHASES_UPDATED Bundle](https://issuetracker.google.com/issues/64075043)
  • Network accessline 1226
    - [No response code in PURCHASES_UPDATED Bundle](https://issuetracker.google.com/issues/64075043)
  • Network accessline 1228
    rotation](https://issuetracker.google.com/issues/63266562)
  • Network accessline 1228
    rotation](https://issuetracker.google.com/issues/63266562)
  • Network accessline 1230
    ## Developer Preview 1 Release (2017-06-12, [Announcement](https://android-developers.googleblog.com/2017/06/money-made-easily-with-new-google-play.html))
  • Network accessline 1230
    ## Developer Preview 1 Release (2017-06-12, [Announcement](https://android-developers.googleblog.com/2017/06/money-made-easily-with-new-google-play.html))

play/play-billing-library-version-upgrade/references/version-checklist.md

  • Network accessline 53
    - \[ \] **Dynamic Checklist Generation** : For any version \>=10.0.0, you **MUST** synthesize a new checklist for each new version header found in the [Release Notes](https://developer.android.com/google/play/billing/release-notes).
  • Network accessline 53
    - \[ \] **Dynamic Checklist Generation** : For any version \>=10.0.0, you **MUST** synthesize a new checklist for each new version header found in the [Release Notes](https://developer.android.com/google/play/billing/release-notes).

play/play-policy-insights/resources/policies.json

  • Network accessline 4
    "category": "User Data",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311#safetysection",
  • Network accessline 4
    "category": "User Data",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311#safetysection",
  • Network accessline 5
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311#safetysection",       "https://developer.android.com/privacy-and-security/declare-data-use",
  • Network accessline 5
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311#safetysection",       "https://developer.android.com/privacy-and-security/declare-data-use",
  • Network accessline 6
    "https://support.google.com/googleplay/android-developer/answer/10144311#safetysection",
  • Network accessline 6
    "https://support.google.com/googleplay/android-developer/answer/10144311#safetysection",
  • Network accessline 7
    "https://developer.android.com/privacy-and-security/declare-data-use",
  • Network accessline 7
    "https://developer.android.com/privacy-and-security/declare-data-use",
  • Network accessline 8
    "https://support.google.com/googleplay/android-developer/answer/10787469"
  • Network accessline 8
    "https://support.google.com/googleplay/android-developer/answer/10787469"
  • Network accessline 205
    "category": "Play Console Requirements",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/15748846"
  • Network accessline 205
    "category": "Play Console Requirements",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/15748846"
  • Network accessline 206
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/15748846"     ]
  • Network accessline 206
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/15748846"     ]
  • Network accessline 207
    "https://support.google.com/googleplay/android-developer/answer/15748846"
  • Network accessline 207
    "https://support.google.com/googleplay/android-developer/answer/15748846"
  • Network accessline 212
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#sms-call-permissions",
  • Network accessline 212
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#sms-call-permissions",
  • Network accessline 213
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#sms-call-permissions",       "https://support.google.com/googleplay/android-developer/answer/10208820"
  • Network accessline 213
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#sms-call-permissions",       "https://support.google.com/googleplay/android-developer/answer/10208820"
  • Network accessline 214
    "https://support.google.com/googleplay/android-developer/answer/16558241#sms-call-permissions",
  • Network accessline 214
    "https://support.google.com/googleplay/android-developer/answer/16558241#sms-call-permissions",
  • Network accessline 215
    "https://support.google.com/googleplay/android-developer/answer/10208820"
  • Network accessline 215
    "https://support.google.com/googleplay/android-developer/answer/10208820"
  • Network accessline 220
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#package-vis",
  • Network accessline 220
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#package-vis",
  • Network accessline 221
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#package-vis",       "https://support.google.com/googleplay/android-developer/answer/10158779"
  • Network accessline 221
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#package-vis",       "https://support.google.com/googleplay/android-developer/answer/10158779"
  • Network accessline 222
    "https://support.google.com/googleplay/android-developer/answer/16558241#package-vis",
  • Network accessline 222
    "https://support.google.com/googleplay/android-developer/answer/16558241#package-vis",
  • Network accessline 223
    "https://support.google.com/googleplay/android-developer/answer/10158779"
  • Network accessline 223
    "https://support.google.com/googleplay/android-developer/answer/10158779"
  • Network accessline 228
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#all-files-access",
  • Network accessline 228
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#all-files-access",
  • Network accessline 229
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#all-files-access",       "https://developer.android.com/training/data-storage/manage-all-files",
  • Network accessline 229
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#all-files-access",       "https://developer.android.com/training/data-storage/manage-all-files",
  • Network accessline 230
    "https://support.google.com/googleplay/android-developer/answer/16558241#all-files-access",
  • Network accessline 230
    "https://support.google.com/googleplay/android-developer/answer/16558241#all-files-access",
  • Network accessline 231
    "https://developer.android.com/training/data-storage/manage-all-files",
  • Network accessline 231
    "https://developer.android.com/training/data-storage/manage-all-files",
  • Network accessline 232
    "https://support.google.com/googleplay/android-developer/answer/10467955"
  • Network accessline 232
    "https://support.google.com/googleplay/android-developer/answer/10467955"
  • Network accessline 237
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#photo-and-video-permissions",
  • Network accessline 237
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#photo-and-video-permissions",
  • Network accessline 238
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#photo-and-video-permissions",       "https://support.google.com/googleplay/android-developer/answer/16935362",
  • Network accessline 238
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#photo-and-video-permissions",       "https://support.google.com/googleplay/android-developer/answer/16935362",
  • Network accessline 239
    "https://support.google.com/googleplay/android-developer/answer/16558241#photo-and-video-permissions",
  • Network accessline 239
    "https://support.google.com/googleplay/android-developer/answer/16558241#photo-and-video-permissions",
  • Network accessline 240
    "https://support.google.com/googleplay/android-developer/answer/16935362",
  • Network accessline 240
    "https://support.google.com/googleplay/android-developer/answer/16935362",
  • Network accessline 241
    "https://developer.android.com/training/data-storage/shared/media"
  • Network accessline 241
    "https://developer.android.com/training/data-storage/shared/media"
  • Network accessline 246
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241",
  • Network accessline 246
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241",
  • Network accessline 247
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241",       "https://support.google.com/googleplay/android-developer/answer/9799150"
  • Network accessline 247
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241",       "https://support.google.com/googleplay/android-developer/answer/9799150"
  • Network accessline 248
    "https://support.google.com/googleplay/android-developer/answer/16558241",
  • Network accessline 248
    "https://support.google.com/googleplay/android-developer/answer/16558241",
  • Network accessline 249
    "https://support.google.com/googleplay/android-developer/answer/9799150"
  • Network accessline 249
    "https://support.google.com/googleplay/android-developer/answer/9799150"
  • Network accessline 254
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16909972#contacts-permissions",
  • Network accessline 254
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16909972#contacts-permissions",
  • Network accessline 255
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16909972#contacts-permissions",       "https://support.google.com/googleplay/android-developer/answer/16935362"
  • Network accessline 255
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16909972#contacts-permissions",       "https://support.google.com/googleplay/android-developer/answer/16935362"
  • Network accessline 256
    "https://support.google.com/googleplay/android-developer/answer/16909972#contacts-permissions",
  • Network accessline 256
    "https://support.google.com/googleplay/android-developer/answer/16909972#contacts-permissions",
  • Network accessline 257
    "https://support.google.com/googleplay/android-developer/answer/16935362"
  • Network accessline 257
    "https://support.google.com/googleplay/android-developer/answer/16935362"
  • Network accessline 262
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311",
  • Network accessline 262
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311",
  • Network accessline 263
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311",       "https://support.google.com/googleplay/android-developer/answer/16558241"
  • Network accessline 263
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311",       "https://support.google.com/googleplay/android-developer/answer/16558241"
  • Network accessline 264
    "https://support.google.com/googleplay/android-developer/answer/10144311",
  • Network accessline 264
    "https://support.google.com/googleplay/android-developer/answer/10144311",
  • Network accessline 265
    "https://support.google.com/googleplay/android-developer/answer/16558241"
  • Network accessline 265
    "https://support.google.com/googleplay/android-developer/answer/16558241"
  • Network accessline 270
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10467955",
  • Network accessline 270
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10467955",
  • Network accessline 271
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10467955",       "https://support.google.com/googleplay/android-developer/answer/16558241"
  • Network accessline 271
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10467955",       "https://support.google.com/googleplay/android-developer/answer/16558241"
  • Network accessline 272
    "https://support.google.com/googleplay/android-developer/answer/10467955",
  • Network accessline 272
    "https://support.google.com/googleplay/android-developer/answer/10467955",
  • Network accessline 273
    "https://support.google.com/googleplay/android-developer/answer/16558241"
  • Network accessline 273
    "https://support.google.com/googleplay/android-developer/answer/16558241"
  • Network accessline 278
    "category": "User Data",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311"
  • Network accessline 278
    "category": "User Data",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311"
  • Network accessline 279
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311"     ]
  • Network accessline 279
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311"     ]
  • Network accessline 280
    "https://support.google.com/googleplay/android-developer/answer/10144311"
  • Network accessline 280
    "https://support.google.com/googleplay/android-developer/answer/10144311"
  • Network accessline 285
    "category": "User Data",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311#account_deletion",
  • Network accessline 285
    "category": "User Data",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311#account_deletion",
  • Network accessline 286
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311#account_deletion",       "https://support.google.com/googleplay/android-developer/answer/13327111"
  • Network accessline 286
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/10144311#account_deletion",       "https://support.google.com/googleplay/android-developer/answer/13327111"
  • Network accessline 287
    "https://support.google.com/googleplay/android-developer/answer/10144311#account_deletion",
  • Network accessline 287
    "https://support.google.com/googleplay/android-developer/answer/10144311#account_deletion",
  • Network accessline 288
    "https://support.google.com/googleplay/android-developer/answer/13327111"
  • Network accessline 288
    "https://support.google.com/googleplay/android-developer/answer/13327111"
  • Network accessline 293
    "category": "Privacy, Deception and Device Abuse",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16561298",
  • Network accessline 293
    "category": "Privacy, Deception and Device Abuse",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16561298",
  • Network accessline 294
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16561298",       "https://support.google.com/googleplay/android-developer/answer/11926878"
  • Network accessline 294
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16561298",       "https://support.google.com/googleplay/android-developer/answer/11926878"
  • Network accessline 295
    "https://support.google.com/googleplay/android-developer/answer/16561298",
  • Network accessline 295
    "https://support.google.com/googleplay/android-developer/answer/16561298",
  • Network accessline 296
    "https://support.google.com/googleplay/android-developer/answer/11926878"
  • Network accessline 296
    "https://support.google.com/googleplay/android-developer/answer/11926878"
  • Network accessline 301
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#accessibility"
  • Network accessline 301
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#accessibility"
  • Network accessline 302
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#accessibility"     ]
  • Network accessline 302
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#accessibility"     ]
  • Network accessline 303
    "https://support.google.com/googleplay/android-developer/answer/16558241#accessibility"
  • Network accessline 303
    "https://support.google.com/googleplay/android-developer/answer/16558241#accessibility"
  • Network accessline 308
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#exact_alarm"
  • Network accessline 308
    "category": "Permissions",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#exact_alarm"
  • Network accessline 309
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#exact_alarm"     ]
  • Network accessline 309
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/16558241#exact_alarm"     ]
  • Network accessline 310
    "https://support.google.com/googleplay/android-developer/answer/16558241#exact_alarm"
  • Network accessline 310
    "https://support.google.com/googleplay/android-developer/answer/16558241#exact_alarm"
  • Network accessline 315
    "category": "Privacy, Deception and Device Abuse",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/13392821",
  • Network accessline 315
    "category": "Privacy, Deception and Device Abuse",     "urls": [       "https://support.google.com/googleplay/android-developer/answer/13392821",
  • Network accessline 316
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/13392821",       "https://support.google.com/googleplay/android-developer/answer/16559646#foreground_service"
  • Network accessline 316
    "urls": [       "https://support.google.com/googleplay/android-developer/answer/13392821",       "https://support.google.com/googleplay/android-developer/answer/16559646#foreground_service"
  • Network accessline 317
    "https://support.google.com/googleplay/android-developer/answer/13392821",
  • Network accessline 317
    "https://support.google.com/googleplay/android-developer/answer/13392821",
  • Network accessline 318
    "https://support.google.com/googleplay/android-developer/answer/16559646#foreground_service"
  • Network accessline 318
    "https://support.google.com/googleplay/android-developer/answer/16559646#foreground_service"

play/play-policy-insights/resources/scanner_config.json

  • Access to secretsline 51
    [Credential-related source omitted]
  • Access to secretsline 51
    [Credential-related source omitted]

play/play-policy-insights/scripts/generate_report.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0

play/play-policy-insights/scripts/orchestrator.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 582
    root = ET.fromstring(xml_content.lstrip("\ufeff"))     ns = {"android": "http://schemas.android.com/apk/res/android"}
  • Network accessline 582
    root = ET.fromstring(xml_content.lstrip("\ufeff"))     ns = {"android": "http://schemas.android.com/apk/res/android"}
  • Network accessline 583
    ns = {"android": "http://schemas.android.com/apk/res/android"}
  • Network accessline 583
    ns = {"android": "http://schemas.android.com/apk/res/android"}
  • Network accessline 589
    if uses_sdk is not None:       details["target_sdk"] = uses_sdk.get(           "{http://schemas.android.com/apk/res/android}targetSdkVersion"
  • Network accessline 589
    if uses_sdk is not None:       details["target_sdk"] = uses_sdk.get(           "{http://schemas.android.com/apk/res/android}targetSdkVersion"
  • Network accessline 590
    details["target_sdk"] = uses_sdk.get(           "{http://schemas.android.com/apk/res/android}targetSdkVersion"       )
  • Network accessline 590
    details["target_sdk"] = uses_sdk.get(           "{http://schemas.android.com/apk/res/android}targetSdkVersion"       )
  • Network accessline 591
    "{http://schemas.android.com/apk/res/android}targetSdkVersion"
  • Network accessline 591
    "{http://schemas.android.com/apk/res/android}targetSdkVersion"
  • Network accessline 596
    if application is not None:       label = application.get(           "{http://schemas.android.com/apk/res/android}label"
  • Network accessline 596
    if application is not None:       label = application.get(           "{http://schemas.android.com/apk/res/android}label"
  • Network accessline 597
    label = application.get(           "{http://schemas.android.com/apk/res/android}label"       )
  • Network accessline 597
    label = application.get(           "{http://schemas.android.com/apk/res/android}label"       )
  • Network accessline 598
    "{http://schemas.android.com/apk/res/android}label"
  • Network accessline 598
    "{http://schemas.android.com/apk/res/android}label"
  • Network accessline 606
    for tag in ["uses-permission", "uses-permission-sdk-23"]:       for perm in root.findall(tag, ns):         name = perm.get("{http://schemas.android.com/apk/res/android}name")
  • Network accessline 606
    for tag in ["uses-permission", "uses-permission-sdk-23"]:       for perm in root.findall(tag, ns):         name = perm.get("{http://schemas.android.com/apk/res/android}name")
  • Network accessline 607
    for perm in root.findall(tag, ns):         name = perm.get("{http://schemas.android.com/apk/res/android}name")         if name:
  • Network accessline 607
    for perm in root.findall(tag, ns):         name = perm.get("{http://schemas.android.com/apk/res/android}name")         if name:
  • Network accessline 608
    name = perm.get("{http://schemas.android.com/apk/res/android}name")
  • Network accessline 608
    name = perm.get("{http://schemas.android.com/apk/res/android}name")
  • Network accessline 620
    for component in root.findall(f".//{tag}", ns):         perm = component.get(             "{http://schemas.android.com/apk/res/android}permission"
  • Network accessline 620
    for component in root.findall(f".//{tag}", ns):         perm = component.get(             "{http://schemas.android.com/apk/res/android}permission"
  • Network accessline 621
    perm = component.get(             "{http://schemas.android.com/apk/res/android}permission"         )
  • Network accessline 621
    perm = component.get(             "{http://schemas.android.com/apk/res/android}permission"         )
  • Network accessline 622
    "{http://schemas.android.com/apk/res/android}permission"
  • Network accessline 622
    "{http://schemas.android.com/apk/res/android}permission"
  • Network accessline 627
    if tag == "provider":           read_perm = component.get(               "{http://schemas.android.com/apk/res/android}readPermission"
  • Network accessline 627
    if tag == "provider":           read_perm = component.get(               "{http://schemas.android.com/apk/res/android}readPermission"
  • Network accessline 628
    read_perm = component.get(               "{http://schemas.android.com/apk/res/android}readPermission"           )
  • Network accessline 628
    read_perm = component.get(               "{http://schemas.android.com/apk/res/android}readPermission"           )
  • Network accessline 629
    "{http://schemas.android.com/apk/res/android}readPermission"
  • Network accessline 629
    "{http://schemas.android.com/apk/res/android}readPermission"
  • Network accessline 632
    details["permissions"].append(read_perm)           write_perm = component.get(               "{http://schemas.android.com/apk/res/android}writePermission"
  • Network accessline 632
    details["permissions"].append(read_perm)           write_perm = component.get(               "{http://schemas.android.com/apk/res/android}writePermission"
  • Network accessline 633
    write_perm = component.get(               "{http://schemas.android.com/apk/res/android}writePermission"           )
  • Network accessline 633
    write_perm = component.get(               "{http://schemas.android.com/apk/res/android}writePermission"           )
  • Network accessline 634
    "{http://schemas.android.com/apk/res/android}writePermission"
  • Network accessline 634
    "{http://schemas.android.com/apk/res/android}writePermission"
  • Network accessline 642
    fgs_type = service.get(           "{http://schemas.android.com/apk/res/android}foregroundServiceType"
  • Network accessline 642
    fgs_type = service.get(           "{http://schemas.android.com/apk/res/android}foregroundServiceType"
  • Network accessline 643
    "{http://schemas.android.com/apk/res/android}foregroundServiceType"
  • Network accessline 643
    "{http://schemas.android.com/apk/res/android}foregroundServiceType"
  • Network accessline 646
    details["foreground_services"].append({             "name": service.get(                 "{http://schemas.android.com/apk/res/android}name"
  • Network accessline 646
    details["foreground_services"].append({             "name": service.get(                 "{http://schemas.android.com/apk/res/android}name"
  • Network accessline 647
    "name": service.get(                 "{http://schemas.android.com/apk/res/android}name"             ),
  • Network accessline 647
    "name": service.get(                 "{http://schemas.android.com/apk/res/android}name"             ),
  • Network accessline 648
    "{http://schemas.android.com/apk/res/android}name"
  • Network accessline 648
    "{http://schemas.android.com/apk/res/android}name"

play/play-policy-insights/scripts/play_store_scraper.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 36
    "Accept-Language": "en-US,en;q=0.9",   }   req = urllib.request.Request(url, headers=headers)
  • Network accessline 36
    "Accept-Language": "en-US,en;q=0.9",   }   req = urllib.request.Request(url, headers=headers)
  • Network accessline 37
    }   req = urllib.request.Request(url, headers=headers)   if verify_ssl:
  • Network accessline 37
    }   req = urllib.request.Request(url, headers=headers)   if verify_ssl:
  • Network accessline 38
    req = urllib.request.Request(url, headers=headers)
  • Network accessline 38
    req = urllib.request.Request(url, headers=headers)
  • Network accessline 42
    context = ssl._create_unverified_context()   try:     with urllib.request.urlopen(req, timeout=10, context=context) as resp:
  • Network accessline 42
    context = ssl._create_unverified_context()   try:     with urllib.request.urlopen(req, timeout=10, context=context) as resp:
  • Network accessline 43
    try:     with urllib.request.urlopen(req, timeout=10, context=context) as resp:       return resp.read().decode("utf-8")
  • Network accessline 43
    try:     with urllib.request.urlopen(req, timeout=10, context=context) as resp:       return resp.read().decode("utf-8")
  • Network accessline 44
    with urllib.request.urlopen(req, timeout=10, context=context) as resp:
  • Network accessline 44
    with urllib.request.urlopen(req, timeout=10, context=context) as resp:
  • Network accessline 386
    details_url = (       f"https://play.google.com/store/apps/details?id={pkg_name}&hl=en&gl=US"
  • Network accessline 386
    details_url = (       f"https://play.google.com/store/apps/details?id={pkg_name}&hl=en&gl=US"
  • Network accessline 387
    f"https://play.google.com/store/apps/details?id={pkg_name}&hl=en&gl=US"
  • Network accessline 387
    f"https://play.google.com/store/apps/details?id={pkg_name}&hl=en&gl=US"
  • Network accessline 388
    )   ds_url = (       f"https://play.google.com/store/apps/datasafety?id={pkg_name}&hl=en&gl=US"
  • Network accessline 388
    )   ds_url = (       f"https://play.google.com/store/apps/datasafety?id={pkg_name}&hl=en&gl=US"
  • Network accessline 389
    ds_url = (       f"https://play.google.com/store/apps/datasafety?id={pkg_name}&hl=en&gl=US"   )
  • Network accessline 389
    ds_url = (       f"https://play.google.com/store/apps/datasafety?id={pkg_name}&hl=en&gl=US"   )
  • Network accessline 390
    f"https://play.google.com/store/apps/datasafety?id={pkg_name}&hl=en&gl=US"
  • Network accessline 390
    f"https://play.google.com/store/apps/datasafety?id={pkg_name}&hl=en&gl=US"

play/play-policy-insights/scripts/scanner.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0

play/play-policy-insights/scripts/template_engine.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 8
    # #     https://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    #     https://www.apache.org/licenses/LICENSE-2.0

profilers/android-profiler/recording/workflows/perfetto-trace-recording/perfetto_trace_recording.md

  • Network accessline 12
    > \[!IMPORTANT\] **Scope:** This guide is **strictly for recording traces on > Android devices** . For other platforms (Linux, macOS, or Chrome), refer to the > platform documentation on [perfetto.dev/docs](https://perfetto.dev/docs/).
  • Network accessline 12
    > \[!IMPORTANT\] **Scope:** This guide is **strictly for recording traces on > Android devices** . For other platforms (Linux, macOS, or Chrome), refer to the > platform documentation on [perfetto.dev/docs](https://perfetto.dev/docs/).
  • Network accessline 14
    > platform documentation on [perfetto.dev/docs](https://perfetto.dev/docs/).
  • Network accessline 14
    > platform documentation on [perfetto.dev/docs](https://perfetto.dev/docs/).
  • Network accessline 29
    TOOLS_URL="https://raw.githubusercontent.com/google/perfetto/main/tools"
  • Network accessline 29
    TOOLS_URL="https://raw.githubusercontent.com/google/perfetto/main/tools"
  • Network accessline 31
    # Java Heap Dump (ART)     curl -O "$TOOLS_URL/java_heap_dump" && chmod +x java_heap_dump
  • Network accessline 31
    # Java Heap Dump (ART)     curl -O "$TOOLS_URL/java_heap_dump" && chmod +x java_heap_dump
  • Network accessline 32
    curl -O "$TOOLS_URL/java_heap_dump" && chmod +x java_heap_dump
  • Network accessline 32
    curl -O "$TOOLS_URL/java_heap_dump" && chmod +x java_heap_dump
  • Network accessline 34
    # Native Heap Profiling (heapprofd)     curl -O "$TOOLS_URL/heap_profile" && chmod +x heap_profile
  • Network accessline 34
    # Native Heap Profiling (heapprofd)     curl -O "$TOOLS_URL/heap_profile" && chmod +x heap_profile
  • Network accessline 35
    curl -O "$TOOLS_URL/heap_profile" && chmod +x heap_profile
  • Network accessline 35
    curl -O "$TOOLS_URL/heap_profile" && chmod +x heap_profile
  • Network accessline 37
    # CPU Stack Sampling (traced_perf)     curl -O "$TOOLS_URL/cpu_profile" && chmod +x cpu_profile
  • Network accessline 37
    # CPU Stack Sampling (traced_perf)     curl -O "$TOOLS_URL/cpu_profile" && chmod +x cpu_profile
  • Network accessline 38
    curl -O "$TOOLS_URL/cpu_profile" && chmod +x cpu_profile
  • Network accessline 38
    curl -O "$TOOLS_URL/cpu_profile" && chmod +x cpu_profile
  • Network accessline 40
    # General Tracing (Ftrace, ATrace, custom configs)     curl -O "$TOOLS_URL/record_android_trace" && chmod +x record_android_trace
  • Network accessline 40
    # General Tracing (Ftrace, ATrace, custom configs)     curl -O "$TOOLS_URL/record_android_trace" && chmod +x record_android_trace
  • Network accessline 41
    curl -O "$TOOLS_URL/record_android_trace" && chmod +x record_android_trace
  • Network accessline 41
    curl -O "$TOOLS_URL/record_android_trace" && chmod +x record_android_trace
  • Network accessline 52
    Capture a snapshot of all Java objects in a process to investigate memory leaks. Reference docs: <https://perfetto.dev/docs/data-sources/java-heap-profiler>.
  • Network accessline 52
    Capture a snapshot of all Java objects in a process to investigate memory leaks. Reference docs: <https://perfetto.dev/docs/data-sources/java-heap-profiler>.
  • Network accessline 53
    Reference docs: <https://perfetto.dev/docs/data-sources/java-heap-profiler>.
  • Network accessline 53
    Reference docs: <https://perfetto.dev/docs/data-sources/java-heap-profiler>.
  • Network accessline 60
    Track C/C++ memory allocations (malloc/free) to find native leaks. Reference docs: <https://perfetto.dev/docs/data-sources/native-heap-profiler>.
  • Network accessline 60
    Track C/C++ memory allocations (malloc/free) to find native leaks. Reference docs: <https://perfetto.dev/docs/data-sources/native-heap-profiler>.
  • Network accessline 61
    docs: <https://perfetto.dev/docs/data-sources/native-heap-profiler>.
  • Network accessline 61
    docs: <https://perfetto.dev/docs/data-sources/native-heap-profiler>.
  • Network accessline 71
    Track RSS, Swap, and process stats over time. Reference docs: <https://perfetto.dev/docs/data-sources/memory-counters-sys-stats>.
  • Network accessline 71
    Track RSS, Swap, and process stats over time. Reference docs: <https://perfetto.dev/docs/data-sources/memory-counters-sys-stats>.
  • Network accessline 72
    <https://perfetto.dev/docs/data-sources/memory-counters-sys-stats>.
  • Network accessline 72
    <https://perfetto.dev/docs/data-sources/memory-counters-sys-stats>.
  • Network accessline 81
    Identify CPU hotspots in C/C++ or Rust code by periodically sampling callstacks. Reference docs: <https://perfetto.dev/docs/data-sources/cpu-profiler>.
  • Network accessline 81
    Identify CPU hotspots in C/C++ or Rust code by periodically sampling callstacks. Reference docs: <https://perfetto.dev/docs/data-sources/cpu-profiler>.
  • Network accessline 82
    Reference docs: <https://perfetto.dev/docs/data-sources/cpu-profiler>.
  • Network accessline 82
    Reference docs: <https://perfetto.dev/docs/data-sources/cpu-profiler>.
  • Network accessline 94
    Investigate jank, slow transitions, CPU scheduling, and system calls. Reference docs: <https://perfetto.dev/docs/data-sources/ftrace>.
  • Network accessline 94
    Investigate jank, slow transitions, CPU scheduling, and system calls. Reference docs: <https://perfetto.dev/docs/data-sources/ftrace>.
  • Network accessline 95
    docs: <https://perfetto.dev/docs/data-sources/ftrace>.
  • Network accessline 95
    docs: <https://perfetto.dev/docs/data-sources/ftrace>.
  • Network accessline 115
    1. **Read the config reference:** `$SKILL_ROOT/recording/workflows/perfetto-trace-recording/references/trace_config_reference.md` explains config structure and data sources, pointing to exemplar configs in `$SKILL_ROOT/recording/workflows/p
  • Network accessline 115
    1. **Read the config reference:** `$SKILL_ROOT/recording/workflows/perfetto-trace-recording/references/trace_config_reference.md` explains config structure and data sources, pointing to exemplar configs in `$SKILL_ROOT/recording/workflows/p

profilers/android-profiler/recording/workflows/perfetto-trace-recording/references/trace_config_reference.md

  • Network accessline 8
    A config is a `TraceConfig` protobuf - authoritative schema: <https://raw.githubusercontent.com/google/perfetto/main/protos/perfetto/config/trace_config.proto>
  • Network accessline 8
    A config is a `TraceConfig` protobuf - authoritative schema: <https://raw.githubusercontent.com/google/perfetto/main/protos/perfetto/config/trace_config.proto>
  • Network accessline 9
    <https://raw.githubusercontent.com/google/perfetto/main/protos/perfetto/config/trace_config.proto>
  • Network accessline 9
    <https://raw.githubusercontent.com/google/perfetto/main/protos/perfetto/config/trace_config.proto>
  • Network accessline 69
    The full, authoritative field list for every data source is the generated [TraceConfig reference](https://perfetto.dev/docs/reference/trace-config-proto);
  • Network accessline 69
    The full, authoritative field list for every data source is the generated [TraceConfig reference](https://perfetto.dev/docs/reference/trace-config-proto);
  • Network accessline 70
    [TraceConfig reference](https://perfetto.dev/docs/reference/trace-config-proto);
  • Network accessline 70
    [TraceConfig reference](https://perfetto.dev/docs/reference/trace-config-proto);
  • Network accessline 72
    [perfetto.dev/docs/data-sources](https://perfetto.dev/docs/data-sources/).
  • Network accessline 72
    [perfetto.dev/docs/data-sources](https://perfetto.dev/docs/data-sources/).

profilers/android-profiler/references/perfetto/bin/trace_processor

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 6
    # You may obtain a copy of the License at # #      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    # You may obtain a copy of the License at # #      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    # #      http://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 7
    # #      http://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 8
    #      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    #      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 38
    'file_size': 14854504,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-amd64/trace_processor_shell'
  • Network accessline 38
    'file_size': 14854504,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-amd64/trace_processor_shell'
  • Network accessline 39
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-amd64/trace_processor_shell'         ),
  • Network accessline 39
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-amd64/trace_processor_shell'         ),
  • Network accessline 40
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-amd64/trace_processor_shell'
  • Network accessline 40
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-amd64/trace_processor_shell'
  • Network accessline 51
    'file_size': 13597976,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-arm64/trace_processor_shell'
  • Network accessline 51
    'file_size': 13597976,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-arm64/trace_processor_shell'
  • Network accessline 52
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-arm64/trace_processor_shell'         ),
  • Network accessline 52
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-arm64/trace_processor_shell'         ),
  • Network accessline 53
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-arm64/trace_processor_shell'
  • Network accessline 53
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/mac-arm64/trace_processor_shell'
  • Network accessline 64
    'file_size': 14897560,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-amd64/trace_processor_shell'
  • Network accessline 64
    'file_size': 14897560,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-amd64/trace_processor_shell'
  • Network accessline 65
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-amd64/trace_processor_shell'         ),
  • Network accessline 65
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-amd64/trace_processor_shell'         ),
  • Network accessline 66
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-amd64/trace_processor_shell'
  • Network accessline 66
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-amd64/trace_processor_shell'
  • Network accessline 77
    'file_size': 10962664,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm/trace_processor_shell'
  • Network accessline 77
    'file_size': 10962664,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm/trace_processor_shell'
  • Network accessline 78
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm/trace_processor_shell'         ),
  • Network accessline 78
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm/trace_processor_shell'         ),
  • Network accessline 79
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm/trace_processor_shell'
  • Network accessline 79
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm/trace_processor_shell'
  • Network accessline 90
    'file_size': 14086160,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm64/trace_processor_shell'
  • Network accessline 90
    'file_size': 14086160,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm64/trace_processor_shell'
  • Network accessline 91
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm64/trace_processor_shell'         ),
  • Network accessline 91
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm64/trace_processor_shell'         ),
  • Network accessline 92
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm64/trace_processor_shell'
  • Network accessline 92
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/linux-arm64/trace_processor_shell'
  • Network accessline 103
    'file_size': 10935412,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm/trace_processor_shell'
  • Network accessline 103
    'file_size': 10935412,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm/trace_processor_shell'
  • Network accessline 104
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm/trace_processor_shell'         ),
  • Network accessline 104
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm/trace_processor_shell'         ),
  • Network accessline 105
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm/trace_processor_shell'
  • Network accessline 105
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm/trace_processor_shell'
  • Network accessline 114
    'file_size': 13838680,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm64/trace_processor_shell'
  • Network accessline 114
    'file_size': 13838680,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm64/trace_processor_shell'
  • Network accessline 115
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm64/trace_processor_shell'         ),
  • Network accessline 115
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm64/trace_processor_shell'         ),
  • Network accessline 116
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm64/trace_processor_shell'
  • Network accessline 116
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-arm64/trace_processor_shell'
  • Network accessline 125
    'file_size': 15814036,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x86/trace_processor_shell'
  • Network accessline 125
    'file_size': 15814036,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x86/trace_processor_shell'
  • Network accessline 126
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x86/trace_processor_shell'         ),
  • Network accessline 126
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x86/trace_processor_shell'         ),
  • Network accessline 127
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x86/trace_processor_shell'
  • Network accessline 127
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x86/trace_processor_shell'
  • Network accessline 136
    'file_size': 14611448,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x64/trace_processor_shell'
  • Network accessline 136
    'file_size': 14611448,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x64/trace_processor_shell'
  • Network accessline 137
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x64/trace_processor_shell'         ),
  • Network accessline 137
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x64/trace_processor_shell'         ),
  • Network accessline 138
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x64/trace_processor_shell'
  • Network accessline 138
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/android-x64/trace_processor_shell'
  • Network accessline 147
    'file_size': 14439936,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/windows-amd64/trace_processor_shell.exe'
  • Network accessline 147
    'file_size': 14439936,         'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/windows-amd64/trace_processor_shell.exe'
  • Network accessline 148
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/windows-amd64/trace_processor_shell.exe'         ),
  • Network accessline 148
    'url': (             'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/windows-amd64/trace_processor_shell.exe'         ),
  • Network accessline 149
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/windows-amd64/trace_processor_shell.exe'
  • Network accessline 149
    'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v58.3/windows-amd64/trace_processor_shell.exe'
  • Network accessline 166
    # You may obtain a copy of the License at # #      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 166
    # You may obtain a copy of the License at # #      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 167
    # #      http://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 167
    # #      http://www.apache.org/licenses/LICENSE-2.0 #
  • Network accessline 168
    #      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 168
    #      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 188
    'file_name': 'traceconv',     'file_size': 7087080,     'url': https://commondatastorage.googleapis.com/.../trace_to_text',
  • Network accessline 188
    'file_name': 'traceconv',     'file_size': 7087080,     'url': https://commondatastorage.googleapis.com/.../trace_to_text',
  • Network accessline 189
    'file_size': 7087080,     'url': https://commondatastorage.googleapis.com/.../trace_to_text',     'sha256': 7d957c005b0dc130f5bd855d6cec27e060d38841b320d04840afc569f9087490',
  • Network accessline 189
    'file_size': 7087080,     'url': https://commondatastorage.googleapis.com/.../trace_to_text',     'sha256': 7d957c005b0dc130f5bd855d6cec27e060d38841b320d04840afc569f9087490',
  • Network accessline 190
    'url': https://commondatastorage.googleapis.com/.../trace_to_text',
  • Network accessline 190
    'url': https://commondatastorage.googleapis.com/.../trace_to_text',
  • Network accessline 242
    # Use a unique random file to guard against concurrent executions.   # See https://github.com/google/perfetto/issues/786 .
  • Network accessline 242
    # Use a unique random file to guard against concurrent executions.   # See https://github.com/google/perfetto/issues/786 .
  • Network accessline 243
    # See https://github.com/google/perfetto/issues/786 .
  • Network accessline 243
    # See https://github.com/google/perfetto/issues/786 .
  • Network accessline 278
    raise Exception(         'No prebuilts available for %s-%s\n' % (plat, machine)         + 'See https://perfetto.dev/docs/contributing/build-instructions'
  • Network accessline 278
    raise Exception(         'No prebuilts available for %s-%s\n' % (plat, machine)         + 'See https://perfetto.dev/docs/contributing/build-instructions'
  • Network accessline 279
    'No prebuilts available for %s-%s\n' % (plat, machine)         + 'See https://perfetto.dev/docs/contributing/build-instructions'     )
  • Network accessline 279
    'No prebuilts available for %s-%s\n' % (plat, machine)         + 'See https://perfetto.dev/docs/contributing/build-instructions'     )
  • Network accessline 280
    + 'See https://perfetto.dev/docs/contributing/build-instructions'
  • Network accessline 280
    + 'See https://perfetto.dev/docs/contributing/build-instructions'

profilers/android-profiler/references/perfetto/sql.md

  • Network accessline 7
    The `trace_processor` binary is what every other Perfetto analysis tool runs on top of, including the Perfetto UI. Reference docs: <https://perfetto.dev/docs/analysis/trace-processor>.
  • Network accessline 7
    The `trace_processor` binary is what every other Perfetto analysis tool runs on top of, including the Perfetto UI. Reference docs: <https://perfetto.dev/docs/analysis/trace-processor>.
  • Network accessline 8
    runs on top of, including the Perfetto UI. Reference docs: <https://perfetto.dev/docs/analysis/trace-processor>. > **Prerequisite --- `trace_processor` must be invokable.** Before
  • Network accessline 8
    runs on top of, including the Perfetto UI. Reference docs: <https://perfetto.dev/docs/analysis/trace-processor>. > **Prerequisite --- `trace_processor` must be invokable.** Before
  • Network accessline 9
    <https://perfetto.dev/docs/analysis/trace-processor>.
  • Network accessline 9
    <https://perfetto.dev/docs/analysis/trace-processor>.
  • Network accessline 44
    `TRACE_FILE` can be a local path, an `http(s)://` URL, or a Perfetto UI share link (`https://ui.perfetto.dev/#!/?s=<hash>`) --- in the last two
  • Network accessline 44
    `TRACE_FILE` can be a local path, an `http(s)://` URL, or a Perfetto UI share link (`https://ui.perfetto.dev/#!/?s=<hash>`) --- in the last two
  • Network accessline 45
    share link (`https://ui.perfetto.dev/#!/?s=<hash>`) --- in the last two
  • Network accessline 45
    share link (`https://ui.perfetto.dev/#!/?s=<hash>`) --- in the last two
  • Network accessline 110
    Static reference for the public surface (does not require a running trace_processor): <https://perfetto.dev/docs/analysis/sql-tables>.
  • Network accessline 110
    Static reference for the public surface (does not require a running trace_processor): <https://perfetto.dev/docs/analysis/sql-tables>.
  • Network accessline 111
    trace_processor): <https://perfetto.dev/docs/analysis/sql-tables>.
  • Network accessline 111
    trace_processor): <https://perfetto.dev/docs/analysis/sql-tables>.
  • Network accessline 115
    Most useful queries are *much* shorter when you build on stdlib modules instead of joining raw tables yourself. Generated stdlib reference: <https://perfetto.dev/docs/analysis/stdlib-docs>.
  • Network accessline 115
    Most useful queries are *much* shorter when you build on stdlib modules instead of joining raw tables yourself. Generated stdlib reference: <https://perfetto.dev/docs/analysis/stdlib-docs>.
  • Network accessline 117
    <https://perfetto.dev/docs/analysis/stdlib-docs>.
  • Network accessline 117
    <https://perfetto.dev/docs/analysis/stdlib-docs>.
  • Network accessline 236
    - Language tour: <https://perfetto.dev/docs/analysis/perfetto-sql-getting-started>
  • Network accessline 236
    - Language tour: <https://perfetto.dev/docs/analysis/perfetto-sql-getting-started>
  • Network accessline 237
    - Trace processor reference: <https://perfetto.dev/docs/analysis/trace-processor>
  • Network accessline 237
    - Trace processor reference: <https://perfetto.dev/docs/analysis/trace-processor>
  • Network accessline 238
    - Generated table reference: <https://perfetto.dev/docs/analysis/sql-tables>
  • Network accessline 238
    - Generated table reference: <https://perfetto.dev/docs/analysis/sql-tables>
  • Network accessline 239
    - Generated stdlib reference: <https://perfetto.dev/docs/analysis/stdlib-docs>
  • Network accessline 239
    - Generated stdlib reference: <https://perfetto.dev/docs/analysis/stdlib-docs>

security/android-permissions-security/SKILL.md

  • Network accessline 113
    <resources xmlns:tools="http://schemas.android.com/tools">
  • Network accessline 113
    <resources xmlns:tools="http://schemas.android.com/tools">
  • Network accessline 426
    When implementing photo or media selection, you must follow the instructions in the [Photo Picker API guide](https://developer.android.com/training/data-storage/shared/photopicker) to avoid requesting broad storage permissions.
  • Network accessline 426
    When implementing photo or media selection, you must follow the instructions in the [Photo Picker API guide](https://developer.android.com/training/data-storage/shared/photopicker) to avoid requesting broad storage permissions.
  • Network accessline 427
    the [Photo Picker API guide](https://developer.android.com/training/data-storage/shared/photopicker) to avoid requesting broad storage permissions.
  • Network accessline 427
    the [Photo Picker API guide](https://developer.android.com/training/data-storage/shared/photopicker) to avoid requesting broad storage permissions.

security/android-permissions-security/references/android/guide/topics/manifest/permission-element.md

  • Network accessline 14
    contained in: :   `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 14
    contained in: :   `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 15
    :   `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 15
    :   `https://developer.android.com/guide/topics/manifest/manifest-element`
  • Network accessline 18
    :   Declares a security permission used to     limit access to specific components or features of this or other applications.     For more information about how permissions work, see the [Permissions](https://developer.android.com/guide/top
  • Network accessline 18
    :   Declares a security permission used to     limit access to specific components or features of this or other applications.     For more information about how permissions work, see the [Permissions](https://developer.android.com/guide/top
  • Network accessline 20
    For more information about how permissions work, see the [Permissions](https://developer.android.com/guide/topics/manifest/manifest-intro#perms) section in the app manifest overview and [Security tips](https://developer.android.com/guide/to
  • Network accessline 20
    For more information about how permissions work, see the [Permissions](https://developer.android.com/guide/topics/manifest/manifest-intro#perms) section in the app manifest overview and [Security tips](https://developer.android.com/guide/to
  • Network accessline 49
    :   The name to be used in         code to refer to the permission, such as in a         `https://developer.android.com/guide/topics/manifest/uses-permission-element` element or the
  • Network accessline 49
    :   The name to be used in         code to refer to the permission, such as in a         `https://developer.android.com/guide/topics/manifest/uses-permission-element` element or the
  • Network accessline 50
    code to refer to the permission, such as in a         `https://developer.android.com/guide/topics/manifest/uses-permission-element` element or the         `permission` attributes of application components.
  • Network accessline 50
    code to refer to the permission, such as in a         `https://developer.android.com/guide/topics/manifest/uses-permission-element` element or the         `permission` attributes of application components.
  • Network accessline 51
    `https://developer.android.com/guide/topics/manifest/uses-permission-element` element or the
  • Network accessline 51
    `https://developer.android.com/guide/topics/manifest/uses-permission-element` element or the
  • Network accessline 71
    :   Assigns this permission to a group. The value of this attribute is         the name of the group, which is declared with the         `https://developer.android.com/guide/topics/manifest/permission-group-element` element in this
  • Network accessline 71
    :   Assigns this permission to a group. The value of this attribute is         the name of the group, which is declared with the         `https://developer.android.com/guide/topics/manifest/permission-group-element` element in this
  • Network accessline 72
    the name of the group, which is declared with the         `https://developer.android.com/guide/topics/manifest/permission-group-element` element in this         or another application. If this attribute isn't set, the permission
  • Network accessline 72
    the name of the group, which is declared with the         `https://developer.android.com/guide/topics/manifest/permission-group-element` element in this         or another application. If this attribute isn't set, the permission
  • Network accessline 73
    `https://developer.android.com/guide/topics/manifest/permission-group-element` element in this
  • Network accessline 73
    `https://developer.android.com/guide/topics/manifest/permission-group-element` element in this
  • Network accessline 92
    The following table shows all base permission types. For a list of flags, see         `https://developer.android.com/reference/android/R.attr#protectionLevel`.
  • Network accessline 92
    The following table shows all base permission types. For a list of flags, see         `https://developer.android.com/reference/android/R.attr#protectionLevel`.
  • Network accessline 93
    `https://developer.android.com/reference/android/R.attr#protectionLevel`.
  • Network accessline 93
    `https://developer.android.com/reference/android/R.attr#protectionLevel`.
  • Network accessline 98
    | `"dangerous"` | A higher-risk permission that gives a requesting application access to private user data or control over the device that can negatively impact the user. Because this type of permission introduces potential risk, the system
  • Network accessline 98
    | `"dangerous"` | A higher-risk permission that gives a requesting application access to private user data or control over the device that can negatively impact the user. Because this type of permission introduces potential risk, the system
  • Network accessline 99
    | `"signature"` | A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission. If the certificates match, the system automatically grants the per
  • Network accessline 99
    | `"signature"` | A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission. If the certificates match, the system automatically grants the per
  • Network accessline 100
    | `"knownSigner"` | A permission that the system grants only if the requesting application is signed with [an allowed certificate](https://developer.android.com/guide/topics/permissions/defining#grant-signature-permissions). If the requeste
  • Network accessline 100
    | `"knownSigner"` | A permission that the system grants only if the requesting application is signed with [an allowed certificate](https://developer.android.com/guide/topics/permissions/defining#grant-signature-permissions). If the requeste
  • Network accessline 106
    see also: :   `https://developer.android.com/guide/topics/manifest/uses-permission-element`
  • Network accessline 106
    see also: :   `https://developer.android.com/guide/topics/manifest/uses-permission-element`
  • Network accessline 107
    :   `https://developer.android.com/guide/topics/manifest/uses-permission-element`
  • Network accessline 107
    :   `https://developer.android.com/guide/topics/manifest/uses-permission-element`
  • Network accessline 109
    `https://developer.android.com/guide/topics/manifest/permission-tree-element`
  • Network accessline 109
    `https://developer.android.com/guide/topics/manifest/permission-tree-element`
  • Network accessline 111
    `https://developer.android.com/guide/topics/manifest/permission-group-element`
  • Network accessline 111
    `https://developer.android.com/guide/topics/manifest/permission-group-element`

security/android-permissions-security/references/android/guide/topics/permissions/overview.md

  • Network accessline 6
    [Video](https://www.youtube.com/watch?v=zCAx4WZ98rs)
  • Network accessline 6
    [Video](https://www.youtube.com/watch?v=zCAx4WZ98rs)
  • Network accessline 10
    permissions, and some best practices for using permissions in your app. Other pages explain how to [minimize your app's requests for permissions](https://developer.android.com/training/permissions/evaluating), [declare
  • Network accessline 10
    permissions, and some best practices for using permissions in your app. Other pages explain how to [minimize your app's requests for permissions](https://developer.android.com/training/permissions/evaluating), [declare
  • Network accessline 11
    pages explain how to [minimize your app's requests for permissions](https://developer.android.com/training/permissions/evaluating), [declare permissions](https://developer.android.com/training/permissions/declaring), [request runtime
  • Network accessline 11
    pages explain how to [minimize your app's requests for permissions](https://developer.android.com/training/permissions/evaluating), [declare permissions](https://developer.android.com/training/permissions/declaring), [request runtime
  • Network accessline 12
    permissions](https://developer.android.com/training/permissions/evaluating), [declare
  • Network accessline 12
    permissions](https://developer.android.com/training/permissions/evaluating), [declare
  • Network accessline 13
    permissions](https://developer.android.com/training/permissions/declaring), [request runtime
  • Network accessline 13
    permissions](https://developer.android.com/training/permissions/declaring), [request runtime
  • Network accessline 14
    permissions](https://developer.android.com/training/permissions/requesting), and [restrict how other apps can
  • Network accessline 14
    permissions](https://developer.android.com/training/permissions/requesting), and [restrict how other apps can
  • Network accessline 15
    interact](https://developer.android.com/training/permissions/restrict-interactions) with your app's
  • Network accessline 15
    interact](https://developer.android.com/training/permissions/restrict-interactions) with your app's
  • Network accessline 18
    To view a complete list of Android app permissions, visit the [permissions API reference page](https://developer.android.com/reference/android/Manifest.permission).
  • Network accessline 18
    To view a complete list of Android app permissions, visit the [permissions API reference page](https://developer.android.com/reference/android/Manifest.permission).
  • Network accessline 19
    reference page](https://developer.android.com/reference/android/Manifest.permission).
  • Network accessline 19
    reference page](https://developer.android.com/reference/android/Manifest.permission).
  • Network accessline 21
    To view some sample apps that demonstrate the permissions workflow, visit the [Android permissions samples repository](https://github.com/android/platform-samples/tree/main/samples/privacy/permissions)
  • Network accessline 21
    To view some sample apps that demonstrate the permissions workflow, visit the [Android permissions samples repository](https://github.com/android/platform-samples/tree/main/samples/privacy/permissions)
  • Network accessline 22
    [Android permissions samples repository](https://github.com/android/platform-samples/tree/main/samples/privacy/permissions) on GitHub.
  • Network accessline 22
    [Android permissions samples repository](https://github.com/android/platform-samples/tree/main/samples/privacy/permissions) on GitHub.
  • Network accessline 23
    repository](https://github.com/android/platform-samples/tree/main/samples/privacy/permissions)
  • Network accessline 23
    repository](https://github.com/android/platform-samples/tree/main/samples/privacy/permissions)
  • Network accessline 29
    restricted actions, determine whether you can get the information or perform the actions [without needing to declare permissions](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases
  • Network accessline 29
    restricted actions, determine whether you can get the information or perform the actions [without needing to declare permissions](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases
  • Network accessline 30
    actions [without needing to declare permissions](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases in your app, such as taking photos, pausing media playback, and displaying
  • Network accessline 30
    actions [without needing to declare permissions](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases in your app, such as taking photos, pausing media playback, and displaying
  • Network accessline 31
    permissions](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases
  • Network accessline 31
    permissions](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases
  • Network accessline 35
    If you decide that your app must access restricted data or perform restricted actions to fulfill a use case, declare the appropriate permissions. Some permissions, known as [install-time permissions](https://developer.android.com/guide/topi
  • Network accessline 35
    If you decide that your app must access restricted data or perform restricted actions to fulfill a use case, declare the appropriate permissions. Some permissions, known as [install-time permissions](https://developer.android.com/guide/topi
  • Network accessline 36
    actions to fulfill a use case, declare the appropriate permissions. Some permissions, known as [install-time permissions](https://developer.android.com/guide/topics/permissions/overview#install-time), are automatically granted when your app
  • Network accessline 36
    actions to fulfill a use case, declare the appropriate permissions. Some permissions, known as [install-time permissions](https://developer.android.com/guide/topics/permissions/overview#install-time), are automatically granted when your app
  • Network accessline 37
    permissions, known as [install-time permissions](https://developer.android.com/guide/topics/permissions/overview#install-time), are
  • Network accessline 37
    permissions, known as [install-time permissions](https://developer.android.com/guide/topics/permissions/overview#install-time), are
  • Network accessline 38
    automatically granted when your app is installed. Other permissions, known as [runtime permissions](https://developer.android.com/guide/topics/permissions/overview#runtime), require your app to go a step further and request the permission a
  • Network accessline 38
    automatically granted when your app is installed. Other permissions, known as [runtime permissions](https://developer.android.com/guide/topics/permissions/overview#runtime), require your app to go a step further and request the permission a
  • Network accessline 39
    [runtime permissions](https://developer.android.com/guide/topics/permissions/overview#runtime), require your app to go a step further and
  • Network accessline 39
    [runtime permissions](https://developer.android.com/guide/topics/permissions/overview#runtime), require your app to go a step further and
  • Network accessline 42
    Figure 1 illustrates the workflow for using app permissions: ![](https://developer.android.com/static/images/training/permissions/workflow-overview.svg) **Figure 1.** High-level workflow for using permissions on Android.
  • Network accessline 42
    Figure 1 illustrates the workflow for using app permissions: ![](https://developer.android.com/static/images/training/permissions/workflow-overview.svg) **Figure 1.** High-level workflow for using permissions on Android.
  • Network accessline 43
    ![](https://developer.android.com/static/images/training/permissions/workflow-overview.svg) **Figure 1.** High-level workflow for using permissions on Android.
  • Network accessline 43
    ![](https://developer.android.com/static/images/training/permissions/workflow-overview.svg) **Figure 1.** High-level workflow for using permissions on Android.
  • Network accessline 51
    your app that permission. The protection level for each permission is based on its type and is shown on the [permissions API reference](https://developer.android.com/reference/android/Manifest.permission) page.
  • Network accessline 51
    your app that permission. The protection level for each permission is based on its type and is shown on the [permissions API reference](https://developer.android.com/reference/android/Manifest.permission) page.
  • Network accessline 53
    [permissions API reference](https://developer.android.com/reference/android/Manifest.permission) page.
  • Network accessline 53
    [permissions API reference](https://developer.android.com/reference/android/Manifest.permission) page.
  • Network accessline 57
    ![The left image shows a list of an app's install-time permissions. The right image shows a pop-up dialog that contains 2 options: allow and deny.](https://developer.android.com/static/images/training/permissions/install-time.svg) **Figure 
  • Network accessline 57
    ![The left image shows a list of an app's install-time permissions. The right image shows a pop-up dialog that contains 2 options: allow and deny.](https://developer.android.com/static/images/training/permissions/install-time.svg) **Figure 
  • Network accessline 58
    right image shows a pop-up dialog that contains 2 options: allow and deny.](https://developer.android.com/static/images/training/permissions/install-time.svg) **Figure 2.** The list of an app's install-time permissions, which appears in an 
  • Network accessline 58
    right image shows a pop-up dialog that contains 2 options: allow and deny.](https://developer.android.com/static/images/training/permissions/install-time.svg) **Figure 2.** The list of an app's install-time permissions, which appears in an 
  • Network accessline 96
    ![A pop-up dialog that contains 2 options: allow and deny.](https://developer.android.com/static/images/training/permissions/runtime.svg) **Figure 3.** The system permission prompt that appears when your app requests a runtime permission.
  • Network accessline 96
    ![A pop-up dialog that contains 2 options: allow and deny.](https://developer.android.com/static/images/training/permissions/runtime.svg) **Figure 3.** The system permission prompt that appears when your app requests a runtime permission.
  • Network accessline 100
    restricted actions that more substantially affect the system and other apps. Therefore, you need to [request runtime permissions](https://developer.android.com/training/permissions/requesting) in your app before you can access
  • Network accessline 100
    restricted actions that more substantially affect the system and other apps. Therefore, you need to [request runtime permissions](https://developer.android.com/training/permissions/requesting) in your app before you can access
  • Network accessline 101
    Therefore, you need to [request runtime permissions](https://developer.android.com/training/permissions/requesting) in your app before you can access the restricted data or perform restricted actions. Don't assume
  • Network accessline 101
    Therefore, you need to [request runtime permissions](https://developer.android.com/training/permissions/requesting) in your app before you can access the restricted data or perform restricted actions. Don't assume
  • Network accessline 102
    permissions](https://developer.android.com/training/permissions/requesting) in your app before you can access
  • Network accessline 102
    permissions](https://developer.android.com/training/permissions/requesting) in your app before you can access
  • Network accessline 115
    The microphone and camera provide access to particularly sensitive information. Therefore, the system helps you [explain why your app accesses this information](https://developer.android.com/training/permissions/explaining-access).
  • Network accessline 115
    The microphone and camera provide access to particularly sensitive information. Therefore, the system helps you [explain why your app accesses this information](https://developer.android.com/training/permissions/explaining-access).
  • Network accessline 117
    information](https://developer.android.com/training/permissions/explaining-access).
  • Network accessline 117
    information](https://developer.android.com/training/permissions/explaining-access).
  • Network accessline 132
    Learn more about how to [request special permissions](https://developer.android.com/training/permissions/requesting-special).
  • Network accessline 132
    Learn more about how to [request special permissions](https://developer.android.com/training/permissions/requesting-special).
  • Network accessline 133
    permissions](https://developer.android.com/training/permissions/requesting-special).
  • Network accessline 133
    permissions](https://developer.android.com/training/permissions/requesting-special).
  • Network accessline 139
    Permissions can belong to [permission groups](https://developer.android.com/guide/topics/manifest/permission-group-element.html).
  • Network accessline 139
    Permissions can belong to [permission groups](https://developer.android.com/guide/topics/manifest/permission-group-element.html).
  • Network accessline 153
    App permissions build on [system security features](https://source.android.com/security/features) and help Android support
  • Network accessline 153
    App permissions build on [system security features](https://source.android.com/security/features) and help Android support
  • Network accessline 154
    features](https://source.android.com/security/features) and help Android support
  • Network accessline 154
    features](https://source.android.com/security/features) and help Android support
  • Network accessline 162
    effectively in your app. For more details on how you can work with permissions on Android, visit the [app permissions best practices](https://developer.android.com/training/permissions/usage-notes) page.
  • Network accessline 162
    effectively in your app. For more details on how you can work with permissions on Android, visit the [app permissions best practices](https://developer.android.com/training/permissions/usage-notes) page.
  • Network accessline 164
    practices](https://developer.android.com/training/permissions/usage-notes) page.
  • Network accessline 164
    practices](https://developer.android.com/training/permissions/usage-notes) page.
  • Network accessline 169
    only the permissions that it needs to complete that action. Depending on how you are using the permissions, there might be an [alternative way to fulfill your app's use case](https://developer.android.com/training/permissions/evaluating) wi
  • Network accessline 169
    only the permissions that it needs to complete that action. Depending on how you are using the permissions, there might be an [alternative way to fulfill your app's use case](https://developer.android.com/training/permissions/evaluating) wi
  • Network accessline 170
    are using the permissions, there might be an [alternative way to fulfill your app's use case](https://developer.android.com/training/permissions/evaluating) without relying on access to sensitive information.
  • Network accessline 170
    are using the permissions, there might be an [alternative way to fulfill your app's use case](https://developer.android.com/training/permissions/evaluating) without relying on access to sensitive information.
  • Network accessline 171
    app's use case](https://developer.android.com/training/permissions/evaluating) without relying on access to
  • Network accessline 171
    app's use case](https://developer.android.com/training/permissions/evaluating) without relying on access to
  • Network accessline 196
    When you access sensitive data or hardware, such as the camera or microphone, provide a continuous indication in your app if the system doesn't already [provide these indicators](https://developer.android.com/training/permissions/explaining
  • Network accessline 196
    When you access sensitive data or hardware, such as the camera or microphone, provide a continuous indication in your app if the system doesn't already [provide these indicators](https://developer.android.com/training/permissions/explaining
  • Network accessline 197
    provide a continuous indication in your app if the system doesn't already [provide these indicators](https://developer.android.com/training/permissions/explaining-access#indicators). This reminder helps users understand exactly when your ap
  • Network accessline 197
    provide a continuous indication in your app if the system doesn't already [provide these indicators](https://developer.android.com/training/permissions/explaining-access#indicators). This reminder helps users understand exactly when your ap
  • Network accessline 198
    [provide these indicators](https://developer.android.com/training/permissions/explaining-access#indicators).
  • Network accessline 198
    [provide these indicators](https://developer.android.com/training/permissions/explaining-access#indicators).
  • Network accessline 205
    components can restrict which other apps can interact with your app, as described on the page about how to [restrict interactions with other apps](https://developer.android.com/training/permissions/restrict-interactions).
  • Network accessline 205
    components can restrict which other apps can interact with your app, as described on the page about how to [restrict interactions with other apps](https://developer.android.com/training/permissions/restrict-interactions).
  • Network accessline 207
    apps](https://developer.android.com/training/permissions/restrict-interactions).
  • Network accessline 207
    apps](https://developer.android.com/training/permissions/restrict-interactions).

security/android-permissions-security/references/android/privacy-and-security/risks/sender-of-pending-intents.md

  • Network accessline 3
    **OWASP category:** [MASVS-CODE: Code Quality](https://mas.owasp.org/MASVS/10-MASVS-CODE)
  • Network accessline 3
    **OWASP category:** [MASVS-CODE: Code Quality](https://mas.owasp.org/MASVS/10-MASVS-CODE)
  • Network accessline 7
    Using [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) or [`PendingIntent.getTarget*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) 
  • Network accessline 7
    Using [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) or [`PendingIntent.getTarget*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) 
  • Network accessline 10
    [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) or
  • Network accessline 10
    [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) or
  • Network accessline 11
    [`PendingIntent.getTarget*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) returns the PendingIntent's
  • Network accessline 11
    [`PendingIntent.getTarget*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) returns the PendingIntent's
  • Network accessline 17
    - from [`NotificationListenerService`](https://developer.android.com/reference/android/service/notification/NotificationListenerService)
  • Network accessline 17
    - from [`NotificationListenerService`](https://developer.android.com/reference/android/service/notification/NotificationListenerService)
  • Network accessline 20
    An example of a legitimate use of [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) or [`PendingIntent.getTarget*()`](https://developer.android.com/reference/android/app/Pend
  • Network accessline 20
    An example of a legitimate use of [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) or [`PendingIntent.getTarget*()`](https://developer.android.com/reference/android/app/Pend
  • Network accessline 37
    Any type of authentication or authorization logic performed when receiving a PendingIntent must not be based on assumptions regarding the PendingIntent's creator identified using either [`PendingIntent.getCreator*()`](https://developer.andr
  • Network accessline 37
    Any type of authentication or authorization logic performed when receiving a PendingIntent must not be based on assumptions regarding the PendingIntent's creator identified using either [`PendingIntent.getCreator*()`](https://developer.andr
  • Network accessline 38
    PendingIntent must not be based on assumptions regarding the PendingIntent's creator identified using either [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) or [`PendingInt
  • Network accessline 38
    PendingIntent must not be based on assumptions regarding the PendingIntent's creator identified using either [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1) or [`PendingInt
  • Network accessline 39
    creator identified using either [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1)
  • Network accessline 39
    creator identified using either [`PendingIntent.getCreator*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1)
  • Network accessline 40
    or [`PendingIntent.getTarget*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1).
  • Network accessline 40
    or [`PendingIntent.getTarget*()`](https://developer.android.com/reference/android/app/PendingIntent#public-methods_1).
  • Network accessline 44
    If you need to authenticate the caller, instead of using PendingIntent, you should use a Service or ContentProvider -- both allow fetching the caller UID with [Binder.getCallingUid()](https://developer.android.com/reference/android/os/Binde
  • Network accessline 44
    If you need to authenticate the caller, instead of using PendingIntent, you should use a Service or ContentProvider -- both allow fetching the caller UID with [Binder.getCallingUid()](https://developer.android.com/reference/android/os/Binde
  • Network accessline 45
    should use a Service or ContentProvider -- both allow fetching the caller UID with [Binder.getCallingUid()](https://developer.android.com/reference/android/os/Binder#getCallingUid()) when you are in the context of dispatching an incoming IP
  • Network accessline 45
    should use a Service or ContentProvider -- both allow fetching the caller UID with [Binder.getCallingUid()](https://developer.android.com/reference/android/os/Binder#getCallingUid()) when you are in the context of dispatching an incoming IP
  • Network accessline 46
    with [Binder.getCallingUid()](https://developer.android.com/reference/android/os/Binder#getCallingUid()) when you are in the context of dispatching an
  • Network accessline 46
    with [Binder.getCallingUid()](https://developer.android.com/reference/android/os/Binder#getCallingUid()) when you are in the context of dispatching an
  • Network accessline 48
    [PackageManager.getPackagesForUid()](https://developer.android.com/reference/android/content/pm/PackageManager#getPackagesForUid(int)).
  • Network accessline 48
    [PackageManager.getPackagesForUid()](https://developer.android.com/reference/android/content/pm/PackageManager#getPackagesForUid(int)).
  • Network accessline 50
    Another approach, available from API level 34, would be to use [BroadcastReceiver.getSentFromUid()](https://developer.android.com/reference/android/content/BroadcastReceiver#getSentFromUid()) or
  • Network accessline 50
    Another approach, available from API level 34, would be to use [BroadcastReceiver.getSentFromUid()](https://developer.android.com/reference/android/content/BroadcastReceiver#getSentFromUid()) or
  • Network accessline 51
    [BroadcastReceiver.getSentFromUid()](https://developer.android.com/reference/android/content/BroadcastReceiver#getSentFromUid()) or
  • Network accessline 51
    [BroadcastReceiver.getSentFromUid()](https://developer.android.com/reference/android/content/BroadcastReceiver#getSentFromUid()) or
  • Network accessline 52
    [BroadcastReceiver.getSentFromPackage()](https://developer.android.com/reference/android/content/BroadcastReceiver#getSentFromPackage()) if the sender opted in to sharing
  • Network accessline 52
    [BroadcastReceiver.getSentFromPackage()](https://developer.android.com/reference/android/content/BroadcastReceiver#getSentFromPackage()) if the sender opted in to sharing
  • Network accessline 53
    identity during broadcast using [BroadcastOptions.isShareIdentityEnabled()](https://developer.android.com/reference/android/app/BroadcastOptions#isShareIdentityEnabled()).
  • Network accessline 53
    identity during broadcast using [BroadcastOptions.isShareIdentityEnabled()](https://developer.android.com/reference/android/app/BroadcastOptions#isShareIdentityEnabled()).
  • Network accessline 61
    - [Pending Intent](https://developer.android.com/reference/android/app/PendingIntent)
  • Network accessline 61
    - [Pending Intent](https://developer.android.com/reference/android/app/PendingIntent)

security/android-permissions-security/references/android/training/permissions/requesting.md

  • Network accessline 1
    [Video](https://www.youtube.com/watch?v=x38dYUm7tCY)
  • Network accessline 1
    [Video](https://www.youtube.com/watch?v=x38dYUm7tCY)
  • Network accessline 3
    Every Android app runs in a limited-access sandbox. If your app needs to use resources or information outside of its own sandbox, you can [declare a runtime permission](https://developer.android.com/training/permissions/declaring) and set u
  • Network accessline 3
    Every Android app runs in a limited-access sandbox. If your app needs to use resources or information outside of its own sandbox, you can [declare a runtime permission](https://developer.android.com/training/permissions/declaring) and set u
  • Network accessline 4
    resources or information outside of its own sandbox, you can [declare a runtime permission](https://developer.android.com/training/permissions/declaring) and set up a permission request that provides this access. These steps are part of the
  • Network accessline 4
    resources or information outside of its own sandbox, you can [declare a runtime permission](https://developer.android.com/training/permissions/declaring) and set up a permission request that provides this access. These steps are part of the
  • Network accessline 5
    runtime permission](https://developer.android.com/training/permissions/declaring) and set up a permission request that provides this
  • Network accessline 5
    runtime permission](https://developer.android.com/training/permissions/declaring) and set up a permission request that provides this
  • Network accessline 6
    access. These steps are part of the [workflow for using permissions](https://developer.android.com/training/basics/permissions#workflow).
  • Network accessline 6
    access. These steps are part of the [workflow for using permissions](https://developer.android.com/training/basics/permissions#workflow).
  • Network accessline 8
    If you declare any [dangerous permissions](https://developer.android.com/guide/topics/permissions/overview#dangerous_permissions), and if your app is installed on
  • Network accessline 8
    If you declare any [dangerous permissions](https://developer.android.com/guide/topics/permissions/overview#dangerous_permissions), and if your app is installed on
  • Network accessline 17
    > [!NOTE] > **Note:** Some permissions guard access to system resources that are particularly sensitive or are not directly related to user privacy. There's a [different > process for requesting these special permissions](https://developer.
  • Network accessline 17
    > [!NOTE] > **Note:** Some permissions guard access to system resources that are particularly sensitive or are not directly related to user privacy. There's a [different > process for requesting these special permissions](https://developer.
  • Network accessline 19
    > process for requesting these special permissions](https://developer.android.com/training/permissions/requesting-special).
  • Network accessline 19
    > process for requesting these special permissions](https://developer.android.com/training/permissions/requesting-special).
  • Network accessline 32
    Before you declare and request runtime permissions in your app, [evaluate whether your app needs to do so](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases in your
  • Network accessline 32
    Before you declare and request runtime permissions in your app, [evaluate whether your app needs to do so](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases in your
  • Network accessline 33
    whether your app needs to do so](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases in your
  • Network accessline 33
    whether your app needs to do so](https://developer.android.com/training/permissions/evaluating). You can fulfill many use cases in your
  • Network accessline 40
    1. [**Declare** the permissions](https://developer.android.com/training/permissions/declaring) your app might need to request in your app's manifest file.
  • Network accessline 40
    1. [**Declare** the permissions](https://developer.android.com/training/permissions/declaring) your app might need to request in your app's manifest file.
  • Network accessline 41
    2. **Design** your app's user experience (UX) so that specific actions in your app are associated with specific runtime permissions. Let users know which actions might require them to grant permission for your app to access private user dat
  • Network accessline 41
    2. **Design** your app's user experience (UX) so that specific actions in your app are associated with specific runtime permissions. Let users know which actions might require them to grant permission for your app to access private user dat
  • Network accessline 42
    3. [**Wait** for the user](https://developer.android.com/training/permissions/requesting#principles) to invoke the task or action in your app that requires access to specific private user data. At that time, your app can request the runtime
  • Network accessline 42
    3. [**Wait** for the user](https://developer.android.com/training/permissions/requesting#principles) to invoke the task or action in your app that requires access to specific private user data. At that time, your app can request the runtime
  • Network accessline 43
    4. [**Check** whether the user has already granted](https://developer.android.com/training/permissions/declaring)
  • Network accessline 43
    4. [**Check** whether the user has already granted](https://developer.android.com/training/permissions/declaring)
  • Network accessline 48
    You must check whether you have a permission every time you perform an    operation that requires that permission. 5. [**Check** whether your app should show a rationale](https://developer.android.com/training/permissions/requesting#explain
  • Network accessline 48
    You must check whether you have a permission every time you perform an    operation that requires that permission. 5. [**Check** whether your app should show a rationale](https://developer.android.com/training/permissions/requesting#explain
  • Network accessline 49
    operation that requires that permission. 5. [**Check** whether your app should show a rationale](https://developer.android.com/training/permissions/requesting#explain) to the user,    explaining why your app needs the user to grant a partic
  • Network accessline 49
    operation that requires that permission. 5. [**Check** whether your app should show a rationale](https://developer.android.com/training/permissions/requesting#explain) to the user,    explaining why your app needs the user to grant a partic
  • Network accessline 50
    5. [**Check** whether your app should show a rationale](https://developer.android.com/training/permissions/requesting#explain) to the user,
  • Network accessline 50
    5. [**Check** whether your app should show a rationale](https://developer.android.com/training/permissions/requesting#explain) to the user,
  • Network accessline 58
    app can provide to the user if they grant the runtime permission. After the    user acknowledges the rationale, continue to the next step. 6. [**Request** the runtime permission](https://developer.android.com/training/permissions/requesting
  • Network accessline 58
    app can provide to the user if they grant the runtime permission. After the    user acknowledges the rationale, continue to the next step. 6. [**Request** the runtime permission](https://developer.android.com/training/permissions/requesting
  • Network accessline 59
    user acknowledges the rationale, continue to the next step. 6. [**Request** the runtime permission](https://developer.android.com/training/permissions/requesting#request-permission) your app requires    to access the private user data. The 
  • Network accessline 59
    user acknowledges the rationale, continue to the next step. 6. [**Request** the runtime permission](https://developer.android.com/training/permissions/requesting#request-permission) your app requires    to access the private user data. The 
  • Network accessline 60
    6. [**Request** the runtime permission](https://developer.android.com/training/permissions/requesting#request-permission) your app requires
  • Network accessline 60
    6. [**Request** the runtime permission](https://developer.android.com/training/permissions/requesting#request-permission) your app requires
  • Network accessline 62
    prompt, such as the one shown on the [permissions overview page](https://developer.android.com/guide/topics/permissions/overview#fig-runtime).
  • Network accessline 62
    prompt, such as the one shown on the [permissions overview page](https://developer.android.com/guide/topics/permissions/overview#fig-runtime).
  • Network accessline 67
    8. If the user granted the permission to your app, you can **access** the    private user data. If the user denied the permission instead, [gracefully    degrade your app experience](https://developer.android.com/training/permissions/reques
  • Network accessline 67
    8. If the user granted the permission to your app, you can **access** the    private user data. If the user denied the permission instead, [gracefully    degrade your app experience](https://developer.android.com/training/permissions/reques
  • Network accessline 68
    private user data. If the user denied the permission instead, [gracefully    degrade your app experience](https://developer.android.com/training/permissions/requesting#handle-denial) so that it provides    functionality to the user without 
  • Network accessline 68
    private user data. If the user denied the permission instead, [gracefully    degrade your app experience](https://developer.android.com/training/permissions/requesting#handle-denial) so that it provides    functionality to the user without 
  • Network accessline 69
    degrade your app experience](https://developer.android.com/training/permissions/requesting#handle-denial) so that it provides
  • Network accessline 69
    degrade your app experience](https://developer.android.com/training/permissions/requesting#handle-denial) so that it provides
  • Network accessline 73
    Figure 1 illustrates the workflow and set of decisions associated with this process: ![A flowchart illustrating the decision process for requesting runtime permissions, starting with an app action, checking if permission is granted, checkin
  • Network accessline 73
    Figure 1 illustrates the workflow and set of decisions associated with this process: ![A flowchart illustrating the decision process for requesting runtime permissions, starting with an app action, checking if permission is granted, checkin
  • Network accessline 75
    ![A flowchart illustrating the decision process for requesting runtime permissions, starting with an app action, checking if permission is granted, checking if rationale is needed, requesting permission, and handling the user's response.](h
  • Network accessline 75
    ![A flowchart illustrating the decision process for requesting runtime permissions, starting with an app action, checking if permission is granted, checking if rationale is needed, requesting permission, and handling the user's response.](h
  • Network accessline 79
    To check whether the user already granted your app a particular permission, pass that permission into the [`ContextCompat.checkSelfPermission()`](https://developer.android.com/reference/androidx/core/content/ContextCompat#checkSelfPermissio
  • Network accessline 79
    To check whether the user already granted your app a particular permission, pass that permission into the [`ContextCompat.checkSelfPermission()`](https://developer.android.com/reference/androidx/core/content/ContextCompat#checkSelfPermissio
  • Network accessline 80
    that permission into the [`ContextCompat.checkSelfPermission()`](https://developer.android.com/reference/androidx/core/content/ContextCompat#checkSelfPermission(android.content.Context,%20java.lang.String)) method.
  • Network accessline 80
    that permission into the [`ContextCompat.checkSelfPermission()`](https://developer.android.com/reference/androidx/core/content/ContextCompat#checkSelfPermission(android.content.Context,%20java.lang.String)) method.
  • Network accessline 81
    This method returns either [`PERMISSION_GRANTED`](https://developer.android.com/reference/android/content/pm/PackageManager#PERMISSION_GRANTED) or
  • Network accessline 81
    This method returns either [`PERMISSION_GRANTED`](https://developer.android.com/reference/android/content/pm/PackageManager#PERMISSION_GRANTED) or
  • Network accessline 82
    [`PERMISSION_DENIED`](https://developer.android.com/reference/android/content/pm/PackageManager#PERMISSION_DENIED), depending on whether your app has the permission.
  • Network accessline 82
    [`PERMISSION_DENIED`](https://developer.android.com/reference/android/content/pm/PackageManager#PERMISSION_DENIED), depending on whether your app has the permission.
  • Network accessline 86
    The permissions dialog shown by the system when you call [`requestPermissions()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#requestPermissions(android.app.Activity,%20java.lang.String%5B%5D,%20int)) says what 
  • Network accessline 86
    The permissions dialog shown by the system when you call [`requestPermissions()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#requestPermissions(android.app.Activity,%20java.lang.String%5B%5D,%20int)) says what 
  • Network accessline 87
    [`requestPermissions()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#requestPermissions(android.app.Activity,%20java.lang.String%5B%5D,%20int)) says what permission your app wants, but doesn't
  • Network accessline 87
    [`requestPermissions()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#requestPermissions(android.app.Activity,%20java.lang.String%5B%5D,%20int)) says what permission your app wants, but doesn't
  • Network accessline 107
    > [!NOTE] > **Note:** Starting in Android 12 (API level 31), [privacy indicators](https://developer.android.com/training/permissions/explaining-access#indicators) notify the user whenever applications access the microphone or camera.
  • Network accessline 107
    > [!NOTE] > **Note:** Starting in Android 12 (API level 31), [privacy indicators](https://developer.android.com/training/permissions/explaining-access#indicators) notify the user whenever applications access the microphone or camera.
  • Network accessline 108
    > **Note:** Starting in Android 12 (API level 31), [privacy indicators](https://developer.android.com/training/permissions/explaining-access#indicators) notify the user whenever applications access the microphone or camera.
  • Network accessline 108
    > **Note:** Starting in Android 12 (API level 31), [privacy indicators](https://developer.android.com/training/permissions/explaining-access#indicators) notify the user whenever applications access the microphone or camera.
  • Network accessline 113
    If the `ContextCompat.checkSelfPermission()` method returns `PERMISSION_DENIED`, call [`shouldShowRequestPermissionRationale()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#shouldShowRequestPermissionRationale(a
  • Network accessline 113
    If the `ContextCompat.checkSelfPermission()` method returns `PERMISSION_DENIED`, call [`shouldShowRequestPermissionRationale()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#shouldShowRequestPermissionRationale(a
  • Network accessline 114
    call [`shouldShowRequestPermissionRationale()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#shouldShowRequestPermissionRationale(android.app.Activity,%20java.lang.String)). If this method returns
  • Network accessline 114
    call [`shouldShowRequestPermissionRationale()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#shouldShowRequestPermissionRationale(android.app.Activity,%20java.lang.String)). If this method returns
  • Network accessline 118
    Additionally, if your app requests a permission related to location, microphone, or camera, consider [explaining why your app needs access](https://developer.android.com/training/permissions/explaining-access) to this
  • Network accessline 118
    Additionally, if your app requests a permission related to location, microphone, or camera, consider [explaining why your app needs access](https://developer.android.com/training/permissions/explaining-access) to this
  • Network accessline 119
    or camera, consider [explaining why your app needs access](https://developer.android.com/training/permissions/explaining-access) to this
  • Network accessline 119
    or camera, consider [explaining why your app needs access](https://developer.android.com/training/permissions/explaining-access) to this
  • Network accessline 130
    To do this, use the [`RequestPermission`](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.RequestPermission) contract, included in an AndroidX
  • Network accessline 130
    To do this, use the [`RequestPermission`](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.RequestPermission) contract, included in an AndroidX
  • Network accessline 131
    library, where you [allow the system to manage the permission request code](https://developer.android.com/training/permissions/requesting#allow-system-manage-request-code)
  • Network accessline 131
    library, where you [allow the system to manage the permission request code](https://developer.android.com/training/permissions/requesting#allow-system-manage-request-code)
  • Network accessline 132
    for you. Because using the `RequestPermission` contract simplifies your logic, it is the recommended solution when possible. However, if needed you can also [manage a request code yourself](https://developer.android.com/training/permissions
  • Network accessline 132
    for you. Because using the `RequestPermission` contract simplifies your logic, it is the recommended solution when possible. However, if needed you can also [manage a request code yourself](https://developer.android.com/training/permissions
  • Network accessline 133
    it is the recommended solution when possible. However, if needed you can also [manage a request code yourself](https://developer.android.com/training/permissions/requesting#manage-request-code-yourself) as part of the permission request and
  • Network accessline 133
    it is the recommended solution when possible. However, if needed you can also [manage a request code yourself](https://developer.android.com/training/permissions/requesting#manage-request-code-yourself) as part of the permission request and
  • Network accessline 134
    [manage a request code yourself](https://developer.android.com/training/permissions/requesting#manage-request-code-yourself) as part of the permission request and
  • Network accessline 134
    [manage a request code yourself](https://developer.android.com/training/permissions/requesting#manage-request-code-yourself) as part of the permission request and
  • Network accessline 143
    - [`androidx.activity`](https://developer.android.com/jetpack/androidx/releases/activity#declaring_dependencies), version 1.2.0 or later
  • Network accessline 143
    - [`androidx.activity`](https://developer.android.com/jetpack/androidx/releases/activity#declaring_dependencies), version 1.2.0 or later
  • Network accessline 144
    - [`androidx.fragment`](https://developer.android.com/jetpack/androidx/releases/fragment#declaring_dependencies), version 1.3.0 or later
  • Network accessline 144
    - [`androidx.fragment`](https://developer.android.com/jetpack/androidx/releases/fragment#declaring_dependencies), version 1.3.0 or later
  • Network accessline 148
    - To request a single permission, use [`RequestPermission`](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.RequestPermission).
  • Network accessline 148
    - To request a single permission, use [`RequestPermission`](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.RequestPermission).
  • Network accessline 149
    - To request multiple permissions at the same time, use [`RequestMultiplePermissions`](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.RequestMultiplePermissions).
  • Network accessline 149
    - To request multiple permissions at the same time, use [`RequestMultiplePermissions`](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.RequestMultiplePermissions).
  • Network accessline 154
    1. In your activity or fragment's initialization logic, pass in an    implementation of [`ActivityResultCallback`](https://developer.android.com/reference/androidx/activity/result/ActivityResultCallback) into a call to
  • Network accessline 154
    1. In your activity or fragment's initialization logic, pass in an    implementation of [`ActivityResultCallback`](https://developer.android.com/reference/androidx/activity/result/ActivityResultCallback) into a call to
  • Network accessline 155
    implementation of [`ActivityResultCallback`](https://developer.android.com/reference/androidx/activity/result/ActivityResultCallback) into a call to
  • Network accessline 155
    implementation of [`ActivityResultCallback`](https://developer.android.com/reference/androidx/activity/result/ActivityResultCallback) into a call to
  • Network accessline 156
    [`registerForActivityResult()`](https://developer.android.com/reference/androidx/activity/result/ActivityResultCaller#registerForActivityResult(androidx.activity.result.contract.ActivityResultContract%3CI,%20O%3E,%20androidx.activity.result
  • Network accessline 156
    [`registerForActivityResult()`](https://developer.android.com/reference/androidx/activity/result/ActivityResultCaller#registerForActivityResult(androidx.activity.result.contract.ActivityResultContract%3CI,%20O%3E,%20androidx.activity.result
  • Network accessline 159
    Keep a reference to the return value of `registerForActivityResult()`, which    is of type [`ActivityResultLauncher`](https://developer.android.com/reference/androidx/activity/result/ActivityResultLauncher).
  • Network accessline 159
    Keep a reference to the return value of `registerForActivityResult()`, which    is of type [`ActivityResultLauncher`](https://developer.android.com/reference/androidx/activity/result/ActivityResultLauncher).
  • Network accessline 160
    is of type [`ActivityResultLauncher`](https://developer.android.com/reference/androidx/activity/result/ActivityResultLauncher).
  • Network accessline 160
    is of type [`ActivityResultLauncher`](https://developer.android.com/reference/androidx/activity/result/ActivityResultLauncher).
  • Network accessline 161
    2. To display the system permissions dialog when necessary, call the    [`launch()`](https://developer.android.com/reference/androidx/activity/result/ActivityResultLauncher#launch(I)) method on the instance of `ActivityResultLauncher` that 
  • Network accessline 161
    2. To display the system permissions dialog when necessary, call the    [`launch()`](https://developer.android.com/reference/androidx/activity/result/ActivityResultLauncher#launch(I)) method on the instance of `ActivityResultLauncher` that 
  • Network accessline 162
    [`launch()`](https://developer.android.com/reference/androidx/activity/result/ActivityResultLauncher#launch(I)) method on the instance of `ActivityResultLauncher` that
  • Network accessline 162
    [`launch()`](https://developer.android.com/reference/androidx/activity/result/ActivityResultLauncher#launch(I)) method on the instance of `ActivityResultLauncher` that
  • Network accessline 175
    Also, the text in the system permission dialog references the    [permission    group](https://developer.android.com/guide/topics/permissions/overview#group) associated with the permission that you requested. This
  • Network accessline 175
    Also, the text in the system permission dialog references the    [permission    group](https://developer.android.com/guide/topics/permissions/overview#group) associated with the permission that you requested. This
  • Network accessline 176
    [permission    group](https://developer.android.com/guide/topics/permissions/overview#group) associated with the permission that you requested. This    permission grouping is designed for system ease-of-use, and your app
  • Network accessline 176
    [permission    group](https://developer.android.com/guide/topics/permissions/overview#group) associated with the permission that you requested. This    permission grouping is designed for system ease-of-use, and your app
  • Network accessline 177
    group](https://developer.android.com/guide/topics/permissions/overview#group) associated with the permission that you requested. This
  • Network accessline 177
    group](https://developer.android.com/guide/topics/permissions/overview#group) associated with the permission that you requested. This
  • Network accessline 294
    As an alternative to [allowing the system to manage the permission request code](https://developer.android.com/training/permissions/requesting#allow-system-manage-request-code), you can manage the permission request code yourself. To do so,
  • Network accessline 294
    As an alternative to [allowing the system to manage the permission request code](https://developer.android.com/training/permissions/requesting#allow-system-manage-request-code), you can manage the permission request code yourself. To do so,
  • Network accessline 295
    code](https://developer.android.com/training/permissions/requesting#allow-system-manage-request-code), you can manage the permission request code yourself. To do so,
  • Network accessline 295
    code](https://developer.android.com/training/permissions/requesting#allow-system-manage-request-code), you can manage the permission request code yourself. To do so,
  • Network accessline 296
    include the request code in a call to [`requestPermissions()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#requestPermissions(android.app.Activity,%20java.lang.String%5B%5D,%20int)).
  • Network accessline 296
    include the request code in a call to [`requestPermissions()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat#requestPermissions(android.app.Activity,%20java.lang.String%5B%5D,%20int)).
  • Network accessline 298
    > [!NOTE] > **Note:** Your app cannot customize the dialog that appears when you call `requestPermissions()`. The text in the system permission dialog references a [permission group](https://developer.android.com/guide/topics/permissions/ov
  • Network accessline 298
    > [!NOTE] > **Note:** Your app cannot customize the dialog that appears when you call `requestPermissions()`. The text in the system permission dialog references a [permission group](https://developer.android.com/guide/topics/permissions/ov
  • Network accessline 299
    > **Note:** Your app cannot customize the dialog that appears when you call `requestPermissions()`. The text in the system permission dialog references a [permission group](https://developer.android.com/guide/topics/permissions/overview#per
  • Network accessline 299
    > **Note:** Your app cannot customize the dialog that appears when you call `requestPermissions()`. The text in the system permission dialog references a [permission group](https://developer.android.com/guide/topics/permissions/overview#per
  • Network accessline 357
    After the user responds to the system permissions dialog, the system then invokes your app's implementation of [`onRequestPermissionsResult()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat.OnRequestPermissionsRes
  • Network accessline 357
    After the user responds to the system permissions dialog, the system then invokes your app's implementation of [`onRequestPermissionsResult()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat.OnRequestPermissionsRes
  • Network accessline 358
    invokes your app's implementation of [`onRequestPermissionsResult()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,%20java.lang.String%5B%5D,%20in
  • Network accessline 358
    invokes your app's implementation of [`onRequestPermissionsResult()`](https://developer.android.com/reference/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,%20java.lang.String%5B%5D,%20in
  • Network accessline 423
    When you request location permissions, follow the same best practices as for any other [runtime permission](https://developer.android.com/training/permissions/requesting). One important difference when it comes
  • Network accessline 423
    When you request location permissions, follow the same best practices as for any other [runtime permission](https://developer.android.com/training/permissions/requesting). One important difference when it comes
  • Network accessline 424
    for any other [runtime permission](https://developer.android.com/training/permissions/requesting). One important difference when it comes
  • Network accessline 424
    for any other [runtime permission](https://developer.android.com/training/permissions/requesting). One important difference when it comes
  • Network accessline 449
    On Android 10 (API level 29) and higher, you must declare a [foreground   service type](https://developer.android.com/guide/topics/manifest/service-element#foregroundservicetype) of `location`, as shown in the following code snippet. On
  • Network accessline 449
    On Android 10 (API level 29) and higher, you must declare a [foreground   service type](https://developer.android.com/guide/topics/manifest/service-element#foregroundservicetype) of `location`, as shown in the following code snippet. On
  • Network accessline 450
    service type](https://developer.android.com/guide/topics/manifest/service-element#foregroundservicetype) of `location`, as shown in the following code snippet. On
  • Network accessline 450
    service type](https://developer.android.com/guide/topics/manifest/service-element#foregroundservicetype) of `location`, as shown in the following code snippet. On
  • Network accessline 464
    You declare a need for foreground location when your app requests either the [`ACCESS_COARSE_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_COARSE_LOCATION) permission or the
  • Network accessline 464
    You declare a need for foreground location when your app requests either the [`ACCESS_COARSE_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_COARSE_LOCATION) permission or the
  • Network accessline 465
    [`ACCESS_COARSE_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_COARSE_LOCATION) permission or the
  • Network accessline 465
    [`ACCESS_COARSE_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_COARSE_LOCATION) permission or the
  • Network accessline 466
    [`ACCESS_FINE_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_FINE_LOCATION) permission, as shown in the following snippet:
  • Network accessline 466
    [`ACCESS_FINE_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_FINE_LOCATION) permission, as shown in the following snippet:
  • Network accessline 480
    An app requires background location access if a feature within the app constantly shares location with other users or uses the [Geofencing API](https://developer.android.com/training/location/geofencing).
  • Network accessline 480
    An app requires background location access if a feature within the app constantly shares location with other users or uses the [Geofencing API](https://developer.android.com/training/location/geofencing).
  • Network accessline 481
    constantly shares location with other users or uses the [Geofencing API](https://developer.android.com/training/location/geofencing).
  • Network accessline 481
    constantly shares location with other users or uses the [Geofencing API](https://developer.android.com/training/location/geofencing).
  • Network accessline 487
    The system considers your app to be using background location if it accesses the device's current location in any situation other than the ones described in the [foreground location](https://developer.android.com/training/permissions/reques
  • Network accessline 487
    The system considers your app to be using background location if it accesses the device's current location in any situation other than the ones described in the [foreground location](https://developer.android.com/training/permissions/reques
  • Network accessline 488
    the device's current location in any situation other than the ones described in the [foreground location](https://developer.android.com/training/permissions/requesting#foreground-location) section. The background location accuracy is the sa
  • Network accessline 488
    the device's current location in any situation other than the ones described in the [foreground location](https://developer.android.com/training/permissions/requesting#foreground-location) section. The background location accuracy is the sa
  • Network accessline 489
    the [foreground location](https://developer.android.com/training/permissions/requesting#foreground-location) section. The background
  • Network accessline 489
    the [foreground location](https://developer.android.com/training/permissions/requesting#foreground-location) section. The background
  • Network accessline 490
    location accuracy is the same as the [foreground location accuracy](https://developer.android.com/training/location/permissions#accuracy), which
  • Network accessline 490
    location accuracy is the same as the [foreground location accuracy](https://developer.android.com/training/location/permissions#accuracy), which
  • Network accessline 493
    On Android 10 (API level 29) and higher, you must declare the [`ACCESS_BACKGROUND_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_BACKGROUND_LOCATION) permission in your app's manifest to request
  • Network accessline 493
    On Android 10 (API level 29) and higher, you must declare the [`ACCESS_BACKGROUND_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_BACKGROUND_LOCATION) permission in your app's manifest to request
  • Network accessline 494
    [`ACCESS_BACKGROUND_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_BACKGROUND_LOCATION) permission in your app's manifest to request
  • Network accessline 494
    [`ACCESS_BACKGROUND_LOCATION`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_BACKGROUND_LOCATION) permission in your app's manifest to request
  • Network accessline 505
    > [!NOTE] > **Note:** The Google Play Store has a [location policy](https://support.google.com/googleplay/android-developer/answer/9799150) concerning device location, restricting background location access to apps that need it for their co
  • Network accessline 505
    > [!NOTE] > **Note:** The Google Play Store has a [location policy](https://support.google.com/googleplay/android-developer/answer/9799150) concerning device location, restricting background location access to apps that need it for their co
  • Network accessline 506
    > **Note:** The Google Play Store has a [location policy](https://support.google.com/googleplay/android-developer/answer/9799150) concerning device location, restricting background location access to apps that need it for their core functio
  • Network accessline 506
    > **Note:** The Google Play Store has a [location policy](https://support.google.com/googleplay/android-developer/answer/9799150) concerning device location, restricting background location access to apps that need it for their core functio
  • Network accessline 528
    Additionally, if the user taps Deny for a specific permission more than once during your app's lifetime of installation on a device, the user will no longer see the system permissions dialog if your app requests that permission again. The u
  • Network accessline 528
    Additionally, if the user taps Deny for a specific permission more than once during your app's lifetime of installation on a device, the user will no longer see the system permissions dialog if your app requests that permission again. The u
  • Network accessline 530
    To provide the best user experience when asking for app permissions, also see [App permissions best practices](https://developer.android.com/training/permissions/usage-notes).
  • Network accessline 530
    To provide the best user experience when asking for app permissions, also see [App permissions best practices](https://developer.android.com/training/permissions/usage-notes).
  • Network accessline 570
    To view a complete list of Android app permissions, visit the [permissions API reference page](https://developer.android.com/reference/android/Manifest.permission#constants_1).
  • Network accessline 570
    To view a complete list of Android app permissions, visit the [permissions API reference page](https://developer.android.com/reference/android/Manifest.permission#constants_1).
  • Network accessline 571
    reference page](https://developer.android.com/reference/android/Manifest.permission#constants_1).
  • Network accessline 571
    reference page](https://developer.android.com/reference/android/Manifest.permission#constants_1).
  • Network accessline 575
    ![The option called 'Only this time' is the second of three buttons in the dialog.](https://developer.android.com/static/images/training/permissions/one-time-prompt.svg) **Figure 2.** System dialog that appears when an app requests a one-ti
  • Network accessline 575
    ![The option called 'Only this time' is the second of three buttons in the dialog.](https://developer.android.com/static/images/training/permissions/one-time-prompt.svg) **Figure 2.** System dialog that appears when an app requests a one-ti
  • Network accessline 576
    the dialog.](https://developer.android.com/static/images/training/permissions/one-time-prompt.svg) **Figure 2.** System dialog that appears when an app requests a one-time permission.
  • Network accessline 576
    the dialog.](https://developer.android.com/static/images/training/permissions/one-time-prompt.svg) **Figure 2.** System dialog that appears when an app requests a one-time permission.
  • Network accessline 601
    > [!NOTE] > **Note:** If your app already follows [best practices](https://developer.android.com/training/permissions/usage-notes) when it requests runtime permissions, you don't need to add or change any logic in your app to support one-ti
  • Network accessline 601
    > [!NOTE] > **Note:** If your app already follows [best practices](https://developer.android.com/training/permissions/usage-notes) when it requests runtime permissions, you don't need to add or change any logic in your app to support one-ti
  • Network accessline 602
    > **Note:** If your app already follows [best practices](https://developer.android.com/training/permissions/usage-notes) when it requests runtime permissions, you don't need to add or change any logic in your app to support one-time permiss
  • Network accessline 602
    > **Note:** If your app already follows [best practices](https://developer.android.com/training/permissions/usage-notes) when it requests runtime permissions, you don't need to add or change any logic in your app to support one-time permiss
  • Network accessline 609
    - An API where you can proactively [remove your app's access](https://developer.android.com/training/permissions/requesting#remove-app-access) to an unused runtime permission.
  • Network accessline 609
    - An API where you can proactively [remove your app's access](https://developer.android.com/training/permissions/requesting#remove-app-access) to an unused runtime permission.
  • Network accessline 611
    apps](https://developer.android.com/training/permissions/requesting#auto-reset-permissions-unused-apps).
  • Network accessline 611
    apps](https://developer.android.com/training/permissions/requesting#auto-reset-permissions-unused-apps).
  • Network accessline 621
    To remove access to a runtime permission, pass the name of that permission into [`revokeSelfPermissionOnKill()`](https://developer.android.com/reference/android/content/Context#revokeSelfPermissionOnKill(java.lang.String)). To remove access
  • Network accessline 621
    To remove access to a runtime permission, pass the name of that permission into [`revokeSelfPermissionOnKill()`](https://developer.android.com/reference/android/content/Context#revokeSelfPermissionOnKill(java.lang.String)). To remove access
  • Network accessline 622
    [`revokeSelfPermissionOnKill()`](https://developer.android.com/reference/android/content/Context#revokeSelfPermissionOnKill(java.lang.String)). To remove access to a group of runtime
  • Network accessline 622
    [`revokeSelfPermissionOnKill()`](https://developer.android.com/reference/android/content/Context#revokeSelfPermissionOnKill(java.lang.String)). To remove access to a group of runtime
  • Network accessline 623
    permissions at the same time, pass a collection of permission names into [`revokeSelfPermissionsOnKill()`](https://developer.android.com/reference/android/content/Context#revokeSelfPermissionsOnKill(java.util.Collection%3Cjava.lang.String%3
  • Network accessline 623
    permissions at the same time, pass a collection of permission names into [`revokeSelfPermissionsOnKill()`](https://developer.android.com/reference/android/content/Context#revokeSelfPermissionsOnKill(java.util.Collection%3Cjava.lang.String%3
  • Network accessline 624
    [`revokeSelfPermissionsOnKill()`](https://developer.android.com/reference/android/content/Context#revokeSelfPermissionsOnKill(java.util.Collection%3Cjava.lang.String%3E)). The permission removal process happens
  • Network accessline 624
    [`revokeSelfPermissionsOnKill()`](https://developer.android.com/reference/android/content/Context#revokeSelfPermissionsOnKill(java.util.Collection%3Cjava.lang.String%3E)). The permission removal process happens
  • Network accessline 627
    > [!NOTE] > **Note:** For system settings to show that your app doesn't access data in a particular [permission group](https://developer.android.com/reference/android/Manifest.permission_group), you must remove access to **all** permissions
  • Network accessline 627
    > [!NOTE] > **Note:** For system settings to show that your app doesn't access data in a particular [permission group](https://developer.android.com/reference/android/Manifest.permission_group), you must remove access to **all** permissions
  • Network accessline 628
    > **Note:** For system settings to show that your app doesn't access data in a particular [permission group](https://developer.android.com/reference/android/Manifest.permission_group), you must remove access to **all** permissions in that p
  • Network accessline 628
    > **Note:** For system settings to show that your app doesn't access data in a particular [permission group](https://developer.android.com/reference/android/Manifest.permission_group), you must remove access to **all** permissions in that p
  • Network accessline 643
    few months, the system protects user data by automatically resetting the sensitive runtime permissions that the user had granted your app. Learn more in the guide about [app hibernation](https://developer.android.com/topic/performance/app-h
  • Network accessline 643
    few months, the system protects user data by automatically resetting the sensitive runtime permissions that the user had granted your app. Learn more in the guide about [app hibernation](https://developer.android.com/topic/performance/app-h
  • Network accessline 645
    the guide about [app hibernation](https://developer.android.com/topic/performance/app-hibernation).
  • Network accessline 645
    the guide about [app hibernation](https://developer.android.com/topic/performance/app-hibernation).
  • Network accessline 655
    For more information on default handlers, including guidance on showing a default handler prompt to users, [see the guide about permissions used only in default handlers](https://developer.android.com/guide/topics/permissions/default-handle
  • Network accessline 655
    For more information on default handlers, including guidance on showing a default handler prompt to users, [see the guide about permissions used only in default handlers](https://developer.android.com/guide/topics/permissions/default-handle
  • Network accessline 657
    default handlers](https://developer.android.com/guide/topics/permissions/default-handlers).
  • Network accessline 657
    default handlers](https://developer.android.com/guide/topics/permissions/default-handlers).
  • Network accessline 671
    - [Permissions overview](https://developer.android.com/guide/topics/permissions/overview)
  • Network accessline 671
    - [Permissions overview](https://developer.android.com/guide/topics/permissions/overview)
  • Network accessline 672
    - [App permissions best practices](https://developer.android.com/training/permissions/usage-notes)
  • Network accessline 672
    - [App permissions best practices](https://developer.android.com/training/permissions/usage-notes)
  • Network accessline 674
    To learn more about requesting permissions, review the [permissions samples](https://github.com/android/platform-samples/tree/main/samples/privacy/permissions).
  • Network accessline 674
    To learn more about requesting permissions, review the [permissions samples](https://github.com/android/platform-samples/tree/main/samples/privacy/permissions).
  • Network accessline 676
    You can also complete this [codelab that demonstrates privacy best practices](https://developer.android.com/codelabs/android-privacy-codelab).
  • Network accessline 676
    You can also complete this [codelab that demonstrates privacy best practices](https://developer.android.com/codelabs/android-privacy-codelab).
  • Network accessline 677
    practices](https://developer.android.com/codelabs/android-privacy-codelab).
  • Network accessline 677
    practices](https://developer.android.com/codelabs/android-privacy-codelab).

system/glance-appwidget-updates-and-memory/references/AndroidManifest.xml

  • Network accessline 1
    <manifest xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <manifest xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-appwidget-updates-and-memory/references/android/about/versions/17/behavior-changes-17.md

  • Network accessline 8
    Be sure to also review the list of [behavior changes that affect all apps running on Android 17](https://developer.android.com/about/versions/17/behavior-changes-all) regardless of your app's [`targetSdkVersion`](https://developer.android.c
  • Network accessline 8
    Be sure to also review the list of [behavior changes that affect all apps running on Android 17](https://developer.android.com/about/versions/17/behavior-changes-all) regardless of your app's [`targetSdkVersion`](https://developer.android.c
  • Network accessline 9
    running on Android 17](https://developer.android.com/about/versions/17/behavior-changes-all) regardless of your app's [`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target).
  • Network accessline 9
    running on Android 17](https://developer.android.com/about/versions/17/behavior-changes-all) regardless of your app's [`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target).
  • Network accessline 11
    > [!NOTE] > **Note:** This page lists some of the more important changes. For more detailed information, see the [Android 17 release notes](https://developer.android.com/about/versions/17/release-notes).
  • Network accessline 11
    > [!NOTE] > **Note:** This page lists some of the more important changes. For more detailed information, see the [Android 17 release notes](https://developer.android.com/about/versions/17/release-notes).
  • Network accessline 12
    > **Note:** This page lists some of the more important changes. For more detailed information, see the [Android 17 release notes](https://developer.android.com/about/versions/17/release-notes).
  • Network accessline 12
    > **Note:** This page lists some of the more important changes. For more detailed information, see the [Android 17 release notes](https://developer.android.com/about/versions/17/release-notes).
  • Network accessline 22
    `RemoteViews` updates for apps targeting Android 17 (API level 37) or higher. When an app passes a `RemoteViews` object to [`AppWidgetManager.updateAppWidget`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#updat
  • Network accessline 22
    `RemoteViews` updates for apps targeting Android 17 (API level 37) or higher. When an app passes a `RemoteViews` object to [`AppWidgetManager.updateAppWidget`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#updat
  • Network accessline 23
    higher. When an app passes a `RemoteViews` object to [`AppWidgetManager.updateAppWidget`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#updateAppWidget(int,%20android.widget.RemoteViews)), `system_server` calcul
  • Network accessline 23
    higher. When an app passes a `RemoteViews` object to [`AppWidgetManager.updateAppWidget`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#updateAppWidget(int,%20android.widget.RemoteViews)), `system_server` calcul
  • Network accessline 24
    [`AppWidgetManager.updateAppWidget`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#updateAppWidget(int,%20android.widget.RemoteViews)),
  • Network accessline 24
    [`AppWidgetManager.updateAppWidget`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#updateAppWidget(int,%20android.widget.RemoteViews)),
  • Network accessline 42
    - In-memory [`Bitmap`](https://developer.android.com/reference/android/graphics/Bitmap) and bitmap-backed [`Icon`](https://developer.android.com/reference/android/graphics/drawable/Icon) objects (`Icon.TYPE_BITMAP` and `Icon.TYPE_ADAPTIVE_B
  • Network accessline 42
    - In-memory [`Bitmap`](https://developer.android.com/reference/android/graphics/Bitmap) and bitmap-backed [`Icon`](https://developer.android.com/reference/android/graphics/drawable/Icon) objects (`Icon.TYPE_BITMAP` and `Icon.TYPE_ADAPTIVE_B
  • Network accessline 91
    5. **Provide an error fallback layout:** In Jetpack Glance, override    [`onCompositionError`](https://developer.android.com/develop/ui/compose/glance/error-handling)
  • Network accessline 91
    5. **Provide an error fallback layout:** In Jetpack Glance, override    [`onCompositionError`](https://developer.android.com/develop/ui/compose/glance/error-handling)
  • Network accessline 92
    [`onCompositionError`](https://developer.android.com/develop/ui/compose/glance/error-handling)
  • Network accessline 92
    [`onCompositionError`](https://developer.android.com/develop/ui/compose/glance/error-handling)
  • Network accessline 107
    Beginning with Android 17, apps targeting Android 17 (API level 37) or higher receive a new lock-free implementation of [`android.os.MessageQueue`](https://developer.android.com/reference/android/os/MessageQueue). The new implementation imp
  • Network accessline 107
    Beginning with Android 17, apps targeting Android 17 (API level 37) or higher receive a new lock-free implementation of [`android.os.MessageQueue`](https://developer.android.com/reference/android/os/MessageQueue). The new implementation imp
  • Network accessline 108
    or higher receive a new lock-free implementation of [`android.os.MessageQueue`](https://developer.android.com/reference/android/os/MessageQueue). The new implementation improves performance and reduces missed frames, but may break clients t
  • Network accessline 108
    or higher receive a new lock-free implementation of [`android.os.MessageQueue`](https://developer.android.com/reference/android/os/MessageQueue). The new implementation improves performance and reduces missed frames, but may break clients t
  • Network accessline 109
    [`android.os.MessageQueue`](https://developer.android.com/reference/android/os/MessageQueue). The new implementation improves performance and
  • Network accessline 109
    [`android.os.MessageQueue`](https://developer.android.com/reference/android/os/MessageQueue). The new implementation improves performance and
  • Network accessline 113
    For more information, including mitigation strategies, see [MessageQueue behavior change guidance](https://developer.android.com/about/versions/17/changes/messagequeue).
  • Network accessline 113
    For more information, including mitigation strategies, see [MessageQueue behavior change guidance](https://developer.android.com/about/versions/17/changes/messagequeue).
  • Network accessline 114
    behavior change guidance](https://developer.android.com/about/versions/17/changes/messagequeue).
  • Network accessline 114
    behavior change guidance](https://developer.android.com/about/versions/17/changes/messagequeue).
  • Network accessline 130
    This feature introduces new [`AccessibilityEvent`](https://developer.android.com/reference/android/view/accessibility/AccessibilityEvent) and [`TextAttribute`](https://developer.android.com/reference/android/view/inputmethod/TextAttribute)
  • Network accessline 130
    This feature introduces new [`AccessibilityEvent`](https://developer.android.com/reference/android/view/accessibility/AccessibilityEvent) and [`TextAttribute`](https://developer.android.com/reference/android/view/inputmethod/TextAttribute)
  • Network accessline 176
    remote server also supports the ECH protocol. If ECH cannot be negotiated, the client sends an ECH extension with randomized contents (a mechanism called ECH GREASE). See [RFC 9849](https://www.rfc-editor.org/rfc/rfc9849.html#name-grease-ec
  • Network accessline 176
    remote server also supports the ECH protocol. If ECH cannot be negotiated, the client sends an ECH extension with randomized contents (a mechanism called ECH GREASE). See [RFC 9849](https://www.rfc-editor.org/rfc/rfc9849.html#name-grease-ec
  • Network accessline 178
    GREASE). See [RFC 9849](https://www.rfc-editor.org/rfc/rfc9849.html#name-grease-ech) for more details on how ECH GREASE works.
  • Network accessline 178
    GREASE). See [RFC 9849](https://www.rfc-editor.org/rfc/rfc9849.html#name-grease-ech) for more details on how ECH GREASE works.
  • Network accessline 180
    To allow apps to customize this behavior, Android 17 adds a new [`<domainEncryption>`](https://developer.android.com/privacy-and-security/security-config#domainEncryption) element to the Network Security Configuration file.
  • Network accessline 180
    To allow apps to customize this behavior, Android 17 adds a new [`<domainEncryption>`](https://developer.android.com/privacy-and-security/security-config#domainEncryption) element to the Network Security Configuration file.
  • Network accessline 181
    [`<domainEncryption>`](https://developer.android.com/privacy-and-security/security-config#domainEncryption) element to the Network Security Configuration file.
  • Network accessline 181
    [`<domainEncryption>`](https://developer.android.com/privacy-and-security/security-config#domainEncryption) element to the Network Security Configuration file.
  • Network accessline 186
    For more information, see the [Encrypted Client Hello](https://developer.android.com/privacy-and-security/security-config#EncryptedClientHelloSummary) documentation.
  • Network accessline 186
    For more information, see the [Encrypted Client Hello](https://developer.android.com/privacy-and-security/security-config#EncryptedClientHelloSummary) documentation.
  • Network accessline 190
    Android 17 introduces the [`ACCESS_LOCAL_NETWORK`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_LOCAL_NETWORK) runtime permission
  • Network accessline 190
    Android 17 introduces the [`ACCESS_LOCAL_NETWORK`](https://developer.android.com/reference/android/Manifest.permission#ACCESS_LOCAL_NETWORK) runtime permission
  • Network accessline 204
    For more information, see the [Local network permission](https://developer.android.com/privacy-and-security/local-network-permission) documentation.
  • Network accessline 204
    For more information, see the [Local network permission](https://developer.android.com/privacy-and-security/local-network-permission) documentation.
  • Network accessline 232
    available until three hours after receipt. This delay is intended to help prevent OTP hijacking. During this three hour delay, the [`SMS_RECEIVED_ACTION`](https://developer.android.com/reference/android/provider/Telephony.Sms.Intents#SMS_RE
  • Network accessline 232
    available until three hours after receipt. This delay is intended to help prevent OTP hijacking. During this three hour delay, the [`SMS_RECEIVED_ACTION`](https://developer.android.com/reference/android/provider/Telephony.Sms.Intents#SMS_RE
  • Network accessline 233
    prevent OTP hijacking. During this three hour delay, the [`SMS_RECEIVED_ACTION`](https://developer.android.com/reference/android/provider/Telephony.Sms.Intents#SMS_RECEIVED_ACTION) broadcast is withheld and [SMS provider](https://developer.
  • Network accessline 233
    prevent OTP hijacking. During this three hour delay, the [`SMS_RECEIVED_ACTION`](https://developer.android.com/reference/android/provider/Telephony.Sms.Intents#SMS_RECEIVED_ACTION) broadcast is withheld and [SMS provider](https://developer.
  • Network accessline 234
    [`SMS_RECEIVED_ACTION`](https://developer.android.com/reference/android/provider/Telephony.Sms.Intents#SMS_RECEIVED_ACTION) broadcast is withheld and
  • Network accessline 234
    [`SMS_RECEIVED_ACTION`](https://developer.android.com/reference/android/provider/Telephony.Sms.Intents#SMS_RECEIVED_ACTION) broadcast is withheld and
  • Network accessline 235
    [SMS provider](https://developer.android.com/reference/android/provider/Telephony.Sms) database queries are filtered. The SMS message is
  • Network accessline 235
    [SMS provider](https://developer.android.com/reference/android/provider/Telephony.Sms) database queries are filtered. The SMS message is
  • Network accessline 238
    Certain apps such as the default SMS assistant app, connected device companion apps, etc., are exempted from this delay. All apps that rely on reading SMS messages for OTP extraction should transition to using [SMS Retriever](https://develo
  • Network accessline 238
    Certain apps such as the default SMS assistant app, connected device companion apps, etc., are exempted from this delay. All apps that rely on reading SMS messages for OTP extraction should transition to using [SMS Retriever](https://develo
  • Network accessline 239
    apps, etc., are exempted from this delay. All apps that rely on reading SMS messages for OTP extraction should transition to using [SMS Retriever](https://developer.android.com/identity/sms-retriever) or [SMS User Consent](https://developer
  • Network accessline 239
    apps, etc., are exempted from this delay. All apps that rely on reading SMS messages for OTP extraction should transition to using [SMS Retriever](https://developer.android.com/identity/sms-retriever) or [SMS User Consent](https://developer
  • Network accessline 240
    messages for OTP extraction should transition to using [SMS Retriever](https://developer.android.com/identity/sms-retriever) or [SMS
  • Network accessline 240
    messages for OTP extraction should transition to using [SMS Retriever](https://developer.android.com/identity/sms-retriever) or [SMS
  • Network accessline 241
    User Consent](https://developers.google.com/identity/sms-retriever/user-consent/overview) APIs to ensure continued functionality.
  • Network accessline 241
    User Consent](https://developers.google.com/identity/sms-retriever/user-consent/overview) APIs to ensure continued functionality.
  • Network accessline 243
    > [!NOTE] > **Note:** Additional SMS OTP protections for WebOTP and SMS Retriever format messages apply to all apps, regardless of their target API level. For more information, see [SMS OTP protection](https://developer.android.com/about/ve
  • Network accessline 243
    > [!NOTE] > **Note:** Additional SMS OTP protections for WebOTP and SMS Retriever format messages apply to all apps, regardless of their target API level. For more information, see [SMS OTP protection](https://developer.android.com/about/ve
  • Network accessline 244
    > **Note:** Additional SMS OTP protections for WebOTP and SMS Retriever format messages apply to all apps, regardless of their target API level. For more information, see [SMS OTP protection](https://developer.android.com/about/versions/17/
  • Network accessline 244
    > **Note:** Additional SMS OTP protections for WebOTP and SMS Retriever format messages apply to all apps, regardless of their target API level. For more information, see [SMS OTP protection](https://developer.android.com/about/versions/17/
  • Network accessline 245
    > apps](https://developer.android.com/about/versions/17/behavior-changes-all) documentation.
  • Network accessline 245
    > apps](https://developer.android.com/about/versions/17/behavior-changes-all) documentation.
  • Network accessline 261
    - **BAL hardening \& improved opt-in:** We are refining Background Activity Launch (BAL) restrictions by extending protections to [`IntentSender`](https://developer.android.com/reference/android/content/IntentSender). Developers must migrat
  • Network accessline 261
    - **BAL hardening \& improved opt-in:** We are refining Background Activity Launch (BAL) restrictions by extending protections to [`IntentSender`](https://developer.android.com/reference/android/content/IntentSender). Developers must migrat
  • Network accessline 266
    If an app targets Android 17 (API level 37) or higher, [certificate transparency (CT)](https://developer.android.com/privacy-and-security/security-config#CertificateTransparencySummary) is enabled by default. (On Android 16, CT is
  • Network accessline 266
    If an app targets Android 17 (API level 37) or higher, [certificate transparency (CT)](https://developer.android.com/privacy-and-security/security-config#CertificateTransparencySummary) is enabled by default. (On Android 16, CT is
  • Network accessline 267
    [certificate transparency (CT)](https://developer.android.com/privacy-and-security/security-config#CertificateTransparencySummary) is enabled by default. (On Android 16, CT is
  • Network accessline 267
    [certificate transparency (CT)](https://developer.android.com/privacy-and-security/security-config#CertificateTransparencySummary) is enabled by default. (On Android 16, CT is
  • Network accessline 268
    available but apps had to [opt in](https://developer.android.com/privacy-and-security/security-config#certificateTransparency).)
  • Network accessline 268
    available but apps had to [opt in](https://developer.android.com/privacy-and-security/security-config#certificateTransparency).)
  • Network accessline 292
    - [`ACCOUNT_NAME`](https://developer.android.com/reference/android/provider/ContactsContract.SyncColumns#ACCOUNT_NAME)
  • Network accessline 292
    - [`ACCOUNT_NAME`](https://developer.android.com/reference/android/provider/ContactsContract.SyncColumns#ACCOUNT_NAME)
  • Network accessline 293
    - [`ACCOUNT_TYPE`](https://developer.android.com/reference/android/provider/ContactsContract.SyncColumns#ACCOUNT_TYPE)
  • Network accessline 293
    - [`ACCOUNT_TYPE`](https://developer.android.com/reference/android/provider/ContactsContract.SyncColumns#ACCOUNT_TYPE)
  • Network accessline 294
    - [`ACCOUNT_TYPE_AND_DATA_SET`](https://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns#ACCOUNT_TYPE_AND_DATA_SET)
  • Network accessline 294
    - [`ACCOUNT_TYPE_AND_DATA_SET`](https://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns#ACCOUNT_TYPE_AND_DATA_SET)
  • Network accessline 296
    Apps that are using these columns from [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data)
  • Network accessline 296
    Apps that are using these columns from [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data)
  • Network accessline 297
    can extract them from [`ContactsContract.RawContacts`](https://developer.android.com/reference/android/provider/ContactsContract.RawContacts)
  • Network accessline 297
    can extract them from [`ContactsContract.RawContacts`](https://developer.android.com/reference/android/provider/ContactsContract.RawContacts)
  • Network accessline 298
    instead, by joining with [`RAW_CONTACT_ID`](https://developer.android.com/reference/android/provider/ContactsContract.DataColumns#RAW_CONTACT_ID).
  • Network accessline 298
    instead, by joining with [`RAW_CONTACT_ID`](https://developer.android.com/reference/android/provider/ContactsContract.DataColumns#RAW_CONTACT_ID).
  • Network accessline 302
    For apps targeting Android 17 (API level 37) and higher, Contacts Provider 2 (CP2) enforces strict SQL query validation when the [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data) table
  • Network accessline 302
    For apps targeting Android 17 (API level 37) and higher, Contacts Provider 2 (CP2) enforces strict SQL query validation when the [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data) table
  • Network accessline 303
    higher, Contacts Provider 2 (CP2) enforces strict SQL query validation when the [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data) table is accessed without [`READ_CONTACTS`](https://de
  • Network accessline 303
    higher, Contacts Provider 2 (CP2) enforces strict SQL query validation when the [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data) table is accessed without [`READ_CONTACTS`](https://de
  • Network accessline 304
    the [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data) table is accessed without
  • Network accessline 304
    the [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data) table is accessed without
  • Network accessline 305
    [`READ_CONTACTS`](https://developer.android.com/reference/android/Manifest.permission#READ_CONTACTS) permission.
  • Network accessline 305
    [`READ_CONTACTS`](https://developer.android.com/reference/android/Manifest.permission#READ_CONTACTS) permission.
  • Network accessline 307
    With this change, if an app doesn't have [`READ_CONTACTS`](https://developer.android.com/reference/android/Manifest.permission#READ_CONTACTS)
  • Network accessline 307
    With this change, if an app doesn't have [`READ_CONTACTS`](https://developer.android.com/reference/android/Manifest.permission#READ_CONTACTS)
  • Network accessline 308
    permission, [`StrictColumns`](https://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder#setStrictColumns(boolean)) and
  • Network accessline 308
    permission, [`StrictColumns`](https://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder#setStrictColumns(boolean)) and
  • Network accessline 309
    [`StrictGrammar`](https://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder#setStrictGrammar(boolean)) options are set when querying
  • Network accessline 309
    [`StrictGrammar`](https://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder#setStrictGrammar(boolean)) options are set when querying
  • Network accessline 310
    the [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data) table. If a query
  • Network accessline 310
    the [`ContactsContract.Data`](https://developer.android.com/reference/android/provider/ContactsContract.Data) table. If a query
  • Network accessline 323
    Starting in Android 17, the [`ContentCaptureManager.setContentCaptureEnabled(boolean)`](https://developer.android.com/reference/android/view/contentcapture/ContentCaptureManager#setContentCaptureEnabled(boolean))
  • Network accessline 323
    Starting in Android 17, the [`ContentCaptureManager.setContentCaptureEnabled(boolean)`](https://developer.android.com/reference/android/view/contentcapture/ContentCaptureManager#setContentCaptureEnabled(boolean))
  • Network accessline 324
    [`ContentCaptureManager.setContentCaptureEnabled(boolean)`](https://developer.android.com/reference/android/view/contentcapture/ContentCaptureManager#setContentCaptureEnabled(boolean))
  • Network accessline 324
    [`ContentCaptureManager.setContentCaptureEnabled(boolean)`](https://developer.android.com/reference/android/view/contentcapture/ContentCaptureManager#setContentCaptureEnabled(boolean))
  • Network accessline 329
    If your app needs to continue disabling Content Capture or restrict screen contents from being captured by the system, you must transition to using the [`FLAG_SECURE`](https://developer.android.com/reference/android/view/WindowManager.Layou
  • Network accessline 329
    If your app needs to continue disabling Content Capture or restrict screen contents from being captured by the system, you must transition to using the [`FLAG_SECURE`](https://developer.android.com/reference/android/view/WindowManager.Layou
  • Network accessline 331
    [`FLAG_SECURE`](https://developer.android.com/reference/android/view/WindowManager.LayoutParams#FLAG_SECURE) window layout parameter.
  • Network accessline 331
    [`FLAG_SECURE`](https://developer.android.com/reference/android/view/WindowManager.LayoutParams#FLAG_SECURE) window layout parameter.
  • Network accessline 350
    For more details, see the [`WindowManager.LayoutParams.FLAG_SECURE`](https://developer.android.com/reference/android/view/WindowManager.LayoutParams#FLAG_SECURE) reference
  • Network accessline 350
    For more details, see the [`WindowManager.LayoutParams.FLAG_SECURE`](https://developer.android.com/reference/android/view/WindowManager.LayoutParams#FLAG_SECURE) reference
  • Network accessline 351
    [`WindowManager.LayoutParams.FLAG_SECURE`](https://developer.android.com/reference/android/view/WindowManager.LayoutParams#FLAG_SECURE) reference
  • Network accessline 351
    [`WindowManager.LayoutParams.FLAG_SECURE`](https://developer.android.com/reference/android/view/WindowManager.LayoutParams#FLAG_SECURE) reference
  • Network accessline 371
    - The foreground service must have while-in-use (WIU) capabilities. - The app must have the [exact alarm](https://developer.android.com/develop/background-work/services/alarms#exact) permission and be interacting with [`USAGE_ALARM`](https:
  • Network accessline 371
    - The foreground service must have while-in-use (WIU) capabilities. - The app must have the [exact alarm](https://developer.android.com/develop/background-work/services/alarms#exact) permission and be interacting with [`USAGE_ALARM`](https:
  • Network accessline 372
    - The app must have the [exact alarm](https://developer.android.com/develop/background-work/services/alarms#exact) permission and be interacting with [`USAGE_ALARM`](https://developer.android.com/reference/android/media/AudioAttributes#USAG
  • Network accessline 372
    - The app must have the [exact alarm](https://developer.android.com/develop/background-work/services/alarms#exact) permission and be interacting with [`USAGE_ALARM`](https://developer.android.com/reference/android/media/AudioAttributes#USAG
  • Network accessline 374
    For more information, including mitigation strategies, see [Background audio hardening](https://developer.android.com/about/versions/17/changes/bg-audio).
  • Network accessline 374
    For more information, including mitigation strategies, see [Background audio hardening](https://developer.android.com/about/versions/17/changes/bg-audio).
  • Network accessline 375
    hardening](https://developer.android.com/about/versions/17/changes/bg-audio).
  • Network accessline 375
    hardening](https://developer.android.com/about/versions/17/changes/bg-audio).
  • Network accessline 384
    We introduced Platform API changes in Android 16 to [ignore orientation, resizability, and aspect ratio restrictions on large screens (sw \>= 600dp)](https://developer.android.com/about/versions/16/behavior-changes-16#ignore-orientation) fo
  • Network accessline 384
    We introduced Platform API changes in Android 16 to [ignore orientation, resizability, and aspect ratio restrictions on large screens (sw \>= 600dp)](https://developer.android.com/about/versions/16/behavior-changes-16#ignore-orientation) fo
  • Network accessline 385
    resizability, and aspect ratio restrictions on large screens (sw \>= 600dp)](https://developer.android.com/about/versions/16/behavior-changes-16#ignore-orientation) for apps targeting API level 36 or higher. Developers have the option to op
  • Network accessline 385
    resizability, and aspect ratio restrictions on large screens (sw \>= 600dp)](https://developer.android.com/about/versions/16/behavior-changes-16#ignore-orientation) for apps targeting API level 36 or higher. Developers have the option to op
  • Network accessline 386
    600dp)](https://developer.android.com/about/versions/16/behavior-changes-16#ignore-orientation) for apps targeting API level
  • Network accessline 386
    600dp)](https://developer.android.com/about/versions/16/behavior-changes-16#ignore-orientation) for apps targeting API level
  • Network accessline 391
    For more information, see [Restrictions on orientation and resizability are ignored](https://developer.android.com/about/versions/17/changes/ff-restrictions-ignored).
  • Network accessline 391
    For more information, see [Restrictions on orientation and resizability are ignored](https://developer.android.com/about/versions/17/changes/ff-restrictions-ignored).
  • Network accessline 392
    ignored](https://developer.android.com/about/versions/17/changes/ff-restrictions-ignored).
  • Network accessline 392
    ignored](https://developer.android.com/about/versions/17/changes/ff-restrictions-ignored).
  • Network accessline 401
    For apps targeting Android 17 (API level 37), the [`read()`](https://developer.android.com/reference/java/io/InputStream#read(byte%5B%5D)) method of the `InputStream` obtained from an
  • Network accessline 401
    For apps targeting Android 17 (API level 37), the [`read()`](https://developer.android.com/reference/java/io/InputStream#read(byte%5B%5D)) method of the `InputStream` obtained from an
  • Network accessline 402
    [`read()`](https://developer.android.com/reference/java/io/InputStream#read(byte%5B%5D)) method of the `InputStream` obtained from an RFCOMM-based [`BluetoothSocket`](https://developer.android.com/reference/android/bluetooth/BluetoothSocket
  • Network accessline 402
    [`read()`](https://developer.android.com/reference/java/io/InputStream#read(byte%5B%5D)) method of the `InputStream` obtained from an RFCOMM-based [`BluetoothSocket`](https://developer.android.com/reference/android/bluetooth/BluetoothSocket
  • Network accessline 403
    RFCOMM-based [`BluetoothSocket`](https://developer.android.com/reference/android/bluetooth/BluetoothSocket) now returns `-1` when the
  • Network accessline 403
    RFCOMM-based [`BluetoothSocket`](https://developer.android.com/reference/android/bluetooth/BluetoothSocket) now returns `-1` when the
  • Network accessline 406
    This change makes RFCOMM socket behavior consistent with LE CoC sockets and aligns with the standard [`InputStream.read()`](https://developer.android.com/reference/java/io/InputStream#read(byte%5B%5D))
  • Network accessline 406
    This change makes RFCOMM socket behavior consistent with LE CoC sockets and aligns with the standard [`InputStream.read()`](https://developer.android.com/reference/java/io/InputStream#read(byte%5B%5D))
  • Network accessline 407
    aligns with the standard [`InputStream.read()`](https://developer.android.com/reference/java/io/InputStream#read(byte%5B%5D))
  • Network accessline 407
    aligns with the standard [`InputStream.read()`](https://developer.android.com/reference/java/io/InputStream#read(byte%5B%5D))
  • Network accessline 414
    correctly when the remote device disconnects or the socket is closed. For an example of the recommended implementation, see the [code snippet](https://developer.android.com/develop/connectivity/bluetooth/transfer-data#example) in the [Trans
  • Network accessline 414
    correctly when the remote device disconnects or the socket is closed. For an example of the recommended implementation, see the [code snippet](https://developer.android.com/develop/connectivity/bluetooth/transfer-data#example) in the [Trans
  • Network accessline 415
    example of the recommended implementation, see the [code snippet](https://developer.android.com/develop/connectivity/bluetooth/transfer-data#example) in the [Transfer Bluetooth data](https://developer.android.com/develop/connectivity/blueto
  • Network accessline 415
    example of the recommended implementation, see the [code snippet](https://developer.android.com/develop/connectivity/bluetooth/transfer-data#example) in the [Transfer Bluetooth data](https://developer.android.com/develop/connectivity/blueto
  • Network accessline 416
    [code snippet](https://developer.android.com/develop/connectivity/bluetooth/transfer-data#example) in the [Transfer Bluetooth data](https://developer.android.com/develop/connectivity/bluetooth/transfer-data)
  • Network accessline 416
    [code snippet](https://developer.android.com/develop/connectivity/bluetooth/transfer-data#example) in the [Transfer Bluetooth data](https://developer.android.com/develop/connectivity/bluetooth/transfer-data)

system/glance-appwidget-updates-and-memory/references/android/develop/ui/compose/glance/create-app-widget.md

  • Network accessline 8
    After completing the [setup steps](https://developer.android.com/develop/ui/compose/glance#get-started), declare the [`AppWidget`](https://developer.android.com/guide/topics/appwidgets) and its
  • Network accessline 8
    After completing the [setup steps](https://developer.android.com/develop/ui/compose/glance#get-started), declare the [`AppWidget`](https://developer.android.com/guide/topics/appwidgets) and its
  • Network accessline 37
    Next, follow the [Create a widget](https://developer.android.com/guide/topics/appwidgets#MetaData) guide to create and define the app
  • Network accessline 37
    Next, follow the [Create a widget](https://developer.android.com/guide/topics/appwidgets#MetaData) guide to create and define the app
  • Network accessline 44
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 44
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 54
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 54
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 101
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 101
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 132
    > [!NOTE] > **Note:** Jetpack Glance handles layout changes inside `provideGlance` responding to dynamic cell scaling if you use `SizeMode.Responsive` or `SizeMode.Exact`. See the [Build UI with Glance guide](https://developer.android.com/d
  • Network accessline 132
    > [!NOTE] > **Note:** Jetpack Glance handles layout changes inside `provideGlance` responding to dynamic cell scaling if you use `SizeMode.Responsive` or `SizeMode.Exact`. See the [Build UI with Glance guide](https://developer.android.com/d
  • Network accessline 133
    > **Note:** Jetpack Glance handles layout changes inside `provideGlance` responding to dynamic cell scaling if you use `SizeMode.Responsive` or `SizeMode.Exact`. See the [Build UI with Glance guide](https://developer.android.com/develop/ui/
  • Network accessline 133
    > **Note:** Jetpack Glance handles layout changes inside `provideGlance` responding to dynamic cell scaling if you use `SizeMode.Responsive` or `SizeMode.Exact`. See the [Build UI with Glance guide](https://developer.android.com/develop/ui/
  • Network accessline 140
    | Attributes and description || |---|---| | `updatePeriodMillis` | Defines how often the widget framework requests an update from the `GlanceAppWidgetReceiver` by calling the `onUpdate()` callback method. We recommend updating as infrequent
  • Network accessline 140
    | Attributes and description || |---|---| | `updatePeriodMillis` | Defines how often the widget framework requests an update from the `GlanceAppWidgetReceiver` by calling the `onUpdate()` callback method. We recommend updating as infrequent
  • Network accessline 141
    |---|---| | `updatePeriodMillis` | Defines how often the widget framework requests an update from the `GlanceAppWidgetReceiver` by calling the `onUpdate()` callback method. We recommend updating as infrequently as possible---no more than on
  • Network accessline 141
    |---|---| | `updatePeriodMillis` | Defines how often the widget framework requests an update from the `GlanceAppWidgetReceiver` by calling the `onUpdate()` callback method. We recommend updating as infrequently as possible---no more than on
  • Network accessline 142
    | `updatePeriodMillis` | Defines how often the widget framework requests an update from the `GlanceAppWidgetReceiver` by calling the `onUpdate()` callback method. We recommend updating as infrequently as possible---no more than once an hour
  • Network accessline 142
    | `updatePeriodMillis` | Defines how often the widget framework requests an update from the `GlanceAppWidgetReceiver` by calling the `onUpdate()` callback method. We recommend updating as infrequently as possible---no more than once an hour
  • Network accessline 143
    | `initialLayout` | Points to the layout resource that defines the loading layout of the widget before the Glance UI compositions render. You can use the predefined loading layout provided in the library: `@layout/glance_default_loading_lay
  • Network accessline 143
    | `initialLayout` | Points to the layout resource that defines the loading layout of the widget before the Glance UI compositions render. You can use the predefined loading layout provided in the library: `@layout/glance_default_loading_lay
  • Network accessline 144
    | `configure` | Defines the configuration activity that launches when the user adds the widget. See the [Enable users to configure app widgets](https://developer.android.com/develop/ui/compose/glance/configuration) guide. |
  • Network accessline 144
    | `configure` | Defines the configuration activity that launches when the user adds the widget. See the [Enable users to configure app widgets](https://developer.android.com/develop/ui/compose/glance/configuration) guide. |
  • Network accessline 145
    | `description` | Specifies the description for the widget picker to display for your widget. Introduced in Android 12. | | `previewLayout` (Android 12) and `previewImage` (Android 11 and lower) | - Starting in Android 12, the `previewLayou
  • Network accessline 145
    | `description` | Specifies the description for the widget picker to display for your widget. Introduced in Android 12. | | `previewLayout` (Android 12) and `previewImage` (Android 11 and lower) | - Starting in Android 12, the `previewLayou
  • Network accessline 146
    | `previewLayout` (Android 12) and `previewImage` (Android 11 and lower) | - Starting in Android 12, the `previewLayout` attribute specifies a scalable preview, which you provide as an XML layout set to the widget's default size. Ideally, t
  • Network accessline 146
    | `previewLayout` (Android 12) and `previewImage` (Android 11 and lower) | - Starting in Android 12, the `previewLayout` attribute specifies a scalable preview, which you provide as an XML layout set to the widget's default size. Ideally, t
  • Network accessline 153
    1. Create a new class that extends from [`GlanceAppWidget`](https://developer.android.com/reference/kotlin/androidx/glance/appwidget/GlanceAppWidget) and overrides
  • Network accessline 153
    1. Create a new class that extends from [`GlanceAppWidget`](https://developer.android.com/reference/kotlin/androidx/glance/appwidget/GlanceAppWidget) and overrides
  • Network accessline 157
    > [!NOTE]    > **Note:** `provideGlance` runs on the main thread. To perform any long running operations in `provideGlance`, switch to another thread using `withContext`. See [Use coroutines for main-safety](https://developer.android.com/ko
  • Network accessline 157
    > [!NOTE]    > **Note:** `provideGlance` runs on the main thread. To perform any long running operations in `provideGlance`, switch to another thread using `withContext`. See [Use coroutines for main-safety](https://developer.android.com/ko
  • Network accessline 158
    > **Note:** `provideGlance` runs on the main thread. To perform any long running operations in `provideGlance`, switch to another thread using `withContext`. See [Use coroutines for main-safety](https://developer.android.com/kotlin/coroutin
  • Network accessline 158
    > **Note:** `provideGlance` runs on the main thread. To perform any long running operations in `provideGlance`, switch to another thread using `withContext`. See [Use coroutines for main-safety](https://developer.android.com/kotlin/coroutin
  • Network accessline 214
    The `GlanceAppWidgetReceiver` coordinates widget broadcasts and platform state updates by extending the underlying [`AppWidgetProvider`](https://developer.android.com/guide/topics/appwidgets). It receives
  • Network accessline 214
    The `GlanceAppWidgetReceiver` coordinates widget broadcasts and platform state updates by extending the underlying [`AppWidgetProvider`](https://developer.android.com/guide/topics/appwidgets). It receives
  • Network accessline 215
    updates by extending the underlying [`AppWidgetProvider`](https://developer.android.com/guide/topics/appwidgets). It receives platform events when your widget is updated, deleted, enabled, or disabled, translating them into Compose lifecycl
  • Network accessline 215
    updates by extending the underlying [`AppWidgetProvider`](https://developer.android.com/guide/topics/appwidgets). It receives platform events when your widget is updated, deleted, enabled, or disabled, translating them into Compose lifecycl
  • Network accessline 266
    - [`ACTION_APPWIDGET_UPDATE`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_UPDATE)
  • Network accessline 266
    - [`ACTION_APPWIDGET_UPDATE`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_UPDATE)
  • Network accessline 267
    - [`ACTION_APPWIDGET_DELETED`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_DELETED)
  • Network accessline 267
    - [`ACTION_APPWIDGET_DELETED`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_DELETED)
  • Network accessline 268
    - [`ACTION_APPWIDGET_ENABLED`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_ENABLED)
  • Network accessline 268
    - [`ACTION_APPWIDGET_ENABLED`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_ENABLED)
  • Network accessline 269
    - [`ACTION_APPWIDGET_DISABLED`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_DISABLED)
  • Network accessline 269
    - [`ACTION_APPWIDGET_DISABLED`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_DISABLED)
  • Network accessline 270
    - [`ACTION_APPWIDGET_OPTIONS_CHANGED`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_OPTIONS_CHANGED)
  • Network accessline 270
    - [`ACTION_APPWIDGET_OPTIONS_CHANGED`](https://developer.android.com/reference/android/appwidget/AppWidgetManager#ACTION_APPWIDGET_OPTIONS_CHANGED)
  • Network accessline 278
    /* Import Glance Composables  In the event there is a name clash with the Compose classes of the same name,  you may rename the imports per https://kotlinlang.org/docs/packages.html#imports
  • Network accessline 278
    /* Import Glance Composables  In the event there is a name clash with the Compose classes of the same name,  you may rename the imports per https://kotlinlang.org/docs/packages.html#imports
  • Network accessline 279
    In the event there is a name clash with the Compose classes of the same name,  you may rename the imports per https://kotlinlang.org/docs/packages.html#imports  using the `as` keyword.
  • Network accessline 279
    In the event there is a name clash with the Compose classes of the same name,  you may rename the imports per https://kotlinlang.org/docs/packages.html#imports  using the `as` keyword.
  • Network accessline 280
    you may rename the imports per https://kotlinlang.org/docs/packages.html#imports
  • Network accessline 280
    you may rename the imports per https://kotlinlang.org/docs/packages.html#imports
  • Network accessline 328
    - In the top level [`Column`](https://developer.android.com/reference/kotlin/androidx/glance/layout/package-summary#column), items are placed vertically one after each other.
  • Network accessline 328
    - In the top level [`Column`](https://developer.android.com/reference/kotlin/androidx/glance/layout/package-summary#column), items are placed vertically one after each other.
  • Network accessline 329
    - The `Column` expands its size to match the available space (via the [`GlanceModifier`](https://developer.android.com/reference/kotlin/androidx/glance/GlanceModifier) and aligns its content to the top (`verticalAlignment`) and centers it h
  • Network accessline 329
    - The `Column` expands its size to match the available space (via the [`GlanceModifier`](https://developer.android.com/reference/kotlin/androidx/glance/GlanceModifier) and aligns its content to the top (`verticalAlignment`) and centers it h
  • Network accessline 330
    - The `Column`'s content is defined using the lambda. The order matters.   - The first item in the `Column` is a `Text` component with `12.dp` of padding.   - The second item is a [`Row`](https://developer.android.com/reference/kotlin/andro
  • Network accessline 330
    - The `Column`'s content is defined using the lambda. The order matters.   - The first item in the `Column` is a `Text` component with `12.dp` of padding.   - The second item is a [`Row`](https://developer.android.com/reference/kotlin/andro
  • Network accessline 332
    - The second item is a [`Row`](https://developer.android.com/reference/kotlin/androidx/glance/layout/package-summary#row), where items are placed horizontally one after each other, with two [`Buttons`](https://developer.android.com/referenc
  • Network accessline 332
    - The second item is a [`Row`](https://developer.android.com/reference/kotlin/androidx/glance/layout/package-summary#row), where items are placed horizontally one after each other, with two [`Buttons`](https://developer.android.com/referenc
  • Network accessline 334
    ![destination_widget](https://developer.android.com/static/develop/ui/compose/images/destination_widget.png) **Figure 1.** An example UI.
  • Network accessline 334
    ![destination_widget](https://developer.android.com/static/develop/ui/compose/images/destination_widget.png) **Figure 1.** An example UI.
  • Network accessline 336
    You can change the alignment values or apply different modifier values (such as padding) to change the placement and size of the components. See the [reference documentation](https://developer.android.com/reference/kotlin/androidx/glance/pa
  • Network accessline 336
    You can change the alignment values or apply different modifier values (such as padding) to change the placement and size of the components. See the [reference documentation](https://developer.android.com/reference/kotlin/androidx/glance/pa
  • Network accessline 337
    padding) to change the placement and size of the components. See the [reference documentation](https://developer.android.com/reference/kotlin/androidx/glance/package-summary) for a full list of components, parameters, and available modifier
  • Network accessline 337
    padding) to change the placement and size of the components. See the [reference documentation](https://developer.android.com/reference/kotlin/androidx/glance/package-summary) for a full list of components, parameters, and available modifier
  • Network accessline 338
    documentation](https://developer.android.com/reference/kotlin/androidx/glance/package-summary) for a full list of components, parameters, and available
  • Network accessline 338
    documentation](https://developer.android.com/reference/kotlin/androidx/glance/package-summary) for a full list of components, parameters, and available
  • Network accessline 346
    - [`system_app_widget_background_radius`](https://developer.android.com/reference/android/R.dimen#system_app_widget_background_radius): Specifies the corner radius of the widget background container (never larger than 28 dp).
  • Network accessline 346
    - [`system_app_widget_background_radius`](https://developer.android.com/reference/android/R.dimen#system_app_widget_background_radius): Specifies the corner radius of the widget background container (never larger than 28 dp).
  • Network accessline 380
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 380
    <shape xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-appwidget-updates-and-memory/references/android/develop/ui/views/appwidgets/index.md

  • Network accessline 1
    Try the Compose way Jetpack Compose is the recommended UI toolkit for Android. Learn how to build widgets using Compose-style APIs. [Jetpack Glance →](https://developer.android.com/develop/ui/compose/glance/create-app-widget) ![](https://de
  • Network accessline 1
    Try the Compose way Jetpack Compose is the recommended UI toolkit for Android. Learn how to build widgets using Compose-style APIs. [Jetpack Glance →](https://developer.android.com/develop/ui/compose/glance/create-app-widget) ![](https://de
  • Network accessline 9
    widgets is called an app widget host (or *widget host*). Figure 1 shows a sample music widget: ![Example of music widget](https://developer.android.com/static/images/appwidgets/music.png) **Figure 1.** Example of a music widget.
  • Network accessline 9
    widgets is called an app widget host (or *widget host*). Figure 1 shows a sample music widget: ![Example of music widget](https://developer.android.com/static/images/appwidgets/music.png) **Figure 1.** Example of a music widget.
  • Network accessline 11
    ![Example of music widget](https://developer.android.com/static/images/appwidgets/music.png) **Figure 1.** Example of a music widget.
  • Network accessline 11
    ![Example of music widget](https://developer.android.com/static/images/appwidgets/music.png) **Figure 1.** Example of a music widget.
  • Network accessline 13
    This document describes how to publish a widget using a widget provider. For details about creating your own [`AppWidgetHost`](https://developer.android.com/reference/android/appwidget/AppWidgetHost) to host
  • Network accessline 13
    This document describes how to publish a widget using a widget provider. For details about creating your own [`AppWidgetHost`](https://developer.android.com/reference/android/appwidget/AppWidgetHost) to host
  • Network accessline 14
    details about creating your own [`AppWidgetHost`](https://developer.android.com/reference/android/appwidget/AppWidgetHost) to host
  • Network accessline 14
    details about creating your own [`AppWidgetHost`](https://developer.android.com/reference/android/appwidget/AppWidgetHost) to host
  • Network accessline 15
    app widgets, see [Build a widget host](https://developer.android.com/develop/ui/views/appwidgets/host).
  • Network accessline 15
    app widgets, see [Build a widget host](https://developer.android.com/develop/ui/views/appwidgets/host).
  • Network accessline 17
    For information about how to design your widget, see [App widgets overview](https://developer.android.com/develop/ui/views/appwidgets/overview).
  • Network accessline 17
    For information about how to design your widget, see [App widgets overview](https://developer.android.com/develop/ui/views/appwidgets/overview).
  • Network accessline 23
    [`AppWidgetProviderInfo`](https://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo) object
  • Network accessline 23
    [`AppWidgetProviderInfo`](https://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo) object
  • Network accessline 24
    :   Describes the metadata for a widget, such     as the widget's layout, update frequency, and [`AppWidgetProvider`](https://developer.android.com/reference/android/appwidget/AppWidgetProvider)     class. `AppWidgetProviderInfo` is [define
  • Network accessline 24
    :   Describes the metadata for a widget, such     as the widget's layout, update frequency, and [`AppWidgetProvider`](https://developer.android.com/reference/android/appwidget/AppWidgetProvider)     class. `AppWidgetProviderInfo` is [define
  • Network accessline 25
    as the widget's layout, update frequency, and [`AppWidgetProvider`](https://developer.android.com/reference/android/appwidget/AppWidgetProvider)
  • Network accessline 25
    as the widget's layout, update frequency, and [`AppWidgetProvider`](https://developer.android.com/reference/android/appwidget/AppWidgetProvider)
  • Network accessline 27
    XML](https://developer.android.com/develop/ui/views/appwidgets#AppWidgetProviderInfo), as described in this document.
  • Network accessline 27
    XML](https://developer.android.com/develop/ui/views/appwidgets#AppWidgetProviderInfo), as described in this document.
  • Network accessline 29
    [`AppWidgetProvider`](https://developer.android.com/reference/android/appwidget/AppWidgetProvider) class
  • Network accessline 29
    [`AppWidgetProvider`](https://developer.android.com/reference/android/appwidget/AppWidgetProvider) class
  • Network accessline 31
    that let you programmatically interface with the widget. Through it, you     receive broadcasts when the widget is updated, enabled, disabled, or     deleted. You [declare `AppWidgetProvider` in the manifest](https://developer.android.com/d
  • Network accessline 31
    that let you programmatically interface with the widget. Through it, you     receive broadcasts when the widget is updated, enabled, disabled, or     deleted. You [declare `AppWidgetProvider` in the manifest](https://developer.android.com/d
  • Network accessline 32
    receive broadcasts when the widget is updated, enabled, disabled, or     deleted. You [declare `AppWidgetProvider` in the manifest](https://developer.android.com/develop/ui/views/appwidgets#widget-broadcasts) and then     [implement](https:
  • Network accessline 32
    receive broadcasts when the widget is updated, enabled, disabled, or     deleted. You [declare `AppWidgetProvider` in the manifest](https://developer.android.com/develop/ui/views/appwidgets#widget-broadcasts) and then     [implement](https:
  • Network accessline 33
    deleted. You [declare `AppWidgetProvider` in the manifest](https://developer.android.com/develop/ui/views/appwidgets#widget-broadcasts) and then
  • Network accessline 33
    deleted. You [declare `AppWidgetProvider` in the manifest](https://developer.android.com/develop/ui/views/appwidgets#widget-broadcasts) and then
  • Network accessline 34
    [implement](https://developer.android.com/develop/ui/views/appwidgets#widget-broadcasts) it, as described in this document.
  • Network accessline 34
    [implement](https://developer.android.com/develop/ui/views/appwidgets#widget-broadcasts) it, as described in this document.
  • Network accessline 36
    View layout :   Defines the initial layout for the widget. The layout is [defined     in XML](https://developer.android.com/develop/ui/views/appwidgets#layout), as described in this document.
  • Network accessline 36
    View layout :   Defines the initial layout for the widget. The layout is [defined     in XML](https://developer.android.com/develop/ui/views/appwidgets#layout), as described in this document.
  • Network accessline 38
    in XML](https://developer.android.com/develop/ui/views/appwidgets#layout), as described in this document.
  • Network accessline 38
    in XML](https://developer.android.com/develop/ui/views/appwidgets#layout), as described in this document.
  • Network accessline 40
    Figure 2 shows how these components fit into the overall app widget processing flow. ![App widget processing flow](https://developer.android.com/static/images/appwidgets/flow-diagram.png) **Figure 2.** App widget processing flow.
  • Network accessline 40
    Figure 2 shows how these components fit into the overall app widget processing flow. ![App widget processing flow](https://developer.android.com/static/images/appwidgets/flow-diagram.png) **Figure 2.** App widget processing flow.
  • Network accessline 42
    ![App widget processing flow](https://developer.android.com/static/images/appwidgets/flow-diagram.png) **Figure 2.** App widget processing flow.
  • Network accessline 42
    ![App widget processing flow](https://developer.android.com/static/images/appwidgets/flow-diagram.png) **Figure 2.** App widget processing flow.
  • Network accessline 51
    - Starting in Android 12 (API level 31), you can provide a default configuration and let users reconfigure the widget later. See [Use the   widget's default configuration](https://developer.android.com/develop/ui/views/appwidgets/configurat
  • Network accessline 51
    - Starting in Android 12 (API level 31), you can provide a default configuration and let users reconfigure the widget later. See [Use the   widget's default configuration](https://developer.android.com/develop/ui/views/appwidgets/configurat
  • Network accessline 52
    widget's default configuration](https://developer.android.com/develop/ui/views/appwidgets/configuration#use-default) and [Enable users to reconfigure placed
  • Network accessline 52
    widget's default configuration](https://developer.android.com/develop/ui/views/appwidgets/configuration#use-default) and [Enable users to reconfigure placed
  • Network accessline 53
    widgets](https://developer.android.com/develop/ui/views/appwidgets/configuration#reconfigure-widgets) for more details.
  • Network accessline 53
    widgets](https://developer.android.com/develop/ui/views/appwidgets/configuration#reconfigure-widgets) for more details.
  • Network accessline 56
    We also recommend the following improvements: [flexible widget layouts](https://developer.android.com/develop/ui/views/appwidgets/layouts),
  • Network accessline 56
    We also recommend the following improvements: [flexible widget layouts](https://developer.android.com/develop/ui/views/appwidgets/layouts),
  • Network accessline 57
    [miscellaneous enhancements](https://developer.android.com/develop/ui/views/appwidgets/enhance), [advanced widgets](https://developer.android.com/develop/ui/views/appwidgets/advanced), [collection
  • Network accessline 57
    [miscellaneous enhancements](https://developer.android.com/develop/ui/views/appwidgets/enhance), [advanced widgets](https://developer.android.com/develop/ui/views/appwidgets/advanced), [collection
  • Network accessline 58
    widgets](https://developer.android.com/develop/ui/views/appwidgets/collections), and [building a widget host](https://developer.android.com/develop/ui/views/appwidgets/host).
  • Network accessline 58
    widgets](https://developer.android.com/develop/ui/views/appwidgets/collections), and [building a widget host](https://developer.android.com/develop/ui/views/appwidgets/host).
  • Network accessline 66
    To learn how to define and configure your metadata XML file, see the Compose-first [Declare the AppWidgetProviderInfo XML section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#AppWidgetProviderInfo) in the Glanc
  • Network accessline 66
    To learn how to define and configure your metadata XML file, see the Compose-first [Declare the AppWidgetProviderInfo XML section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#AppWidgetProviderInfo) in the Glanc
  • Network accessline 67
    Compose-first [Declare the AppWidgetProviderInfo XML section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#AppWidgetProviderInfo) in the Glance
  • Network accessline 67
    Compose-first [Declare the AppWidgetProviderInfo XML section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#AppWidgetProviderInfo) in the Glance
  • Network accessline 77
    To understand how to register your receiver in the manifest and implement Hilt-compatible lifecycle overrides, see the Compose-first [Use the AppWidgetProvider class to handle broadcasts section](https://developer.android.com/develop/ui/com
  • Network accessline 77
    To understand how to register your receiver in the manifest and implement Hilt-compatible lifecycle overrides, see the Compose-first [Use the AppWidgetProvider class to handle broadcasts section](https://developer.android.com/develop/ui/com
  • Network accessline 78
    Hilt-compatible lifecycle overrides, see the Compose-first [Use the AppWidgetProvider class to handle broadcasts section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#widget-broadcasts) in the Glance documentati
  • Network accessline 78
    Hilt-compatible lifecycle overrides, see the Compose-first [Use the AppWidgetProvider class to handle broadcasts section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#widget-broadcasts) in the Glance documentati
  • Network accessline 79
    AppWidgetProvider class to handle broadcasts section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#widget-broadcasts) in the Glance
  • Network accessline 79
    AppWidgetProvider class to handle broadcasts section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#widget-broadcasts) in the Glance
  • Network accessline 84
    You must define an initial layout for your widget in XML and save it in the project's `res/layout/` directory. Refer to [Design guidelines](https://developer.android.com/develop/ui/views/appwidgets/overview#design) for details.
  • Network accessline 84
    You must define an initial layout for your widget in XML and save it in the project's `res/layout/` directory. Refer to [Design guidelines](https://developer.android.com/develop/ui/views/appwidgets/overview#design) for details.
  • Network accessline 85
    project's `res/layout/` directory. Refer to [Design guidelines](https://developer.android.com/develop/ui/views/appwidgets/overview#design) for details.
  • Network accessline 85
    project's `res/layout/` directory. Refer to [Design guidelines](https://developer.android.com/develop/ui/views/appwidgets/overview#design) for details.
  • Network accessline 87
    Creating the widget layout is straightforward if you're familiar with [layouts](https://developer.android.com/guide/topics/ui/declaring-layout). However, be aware that widget layouts are based on
  • Network accessline 87
    Creating the widget layout is straightforward if you're familiar with [layouts](https://developer.android.com/guide/topics/ui/declaring-layout). However, be aware that widget layouts are based on
  • Network accessline 88
    [layouts](https://developer.android.com/guide/topics/ui/declaring-layout). However, be aware that widget layouts are based on
  • Network accessline 88
    [layouts](https://developer.android.com/guide/topics/ui/declaring-layout). However, be aware that widget layouts are based on
  • Network accessline 89
    [`RemoteViews`](https://developer.android.com/reference/android/widget/RemoteViews), which doesn't support every kind of layout or view widget.
  • Network accessline 89
    [`RemoteViews`](https://developer.android.com/reference/android/widget/RemoteViews), which doesn't support every kind of layout or view widget.
  • Network accessline 93
    `RemoteViews` also supports [`ViewStub`](https://developer.android.com/reference/android/view/ViewStub), which is an invisible, zero-sized
  • Network accessline 93
    `RemoteViews` also supports [`ViewStub`](https://developer.android.com/reference/android/view/ViewStub), which is an invisible, zero-sized
  • Network accessline 101
    - [`CheckBox`](https://developer.android.com/reference/kotlin/android/widget/CheckBox)
  • Network accessline 101
    - [`CheckBox`](https://developer.android.com/reference/kotlin/android/widget/CheckBox)
  • Network accessline 103
    - [`Switch`](https://developer.android.com/reference/android/widget/Switch)
  • Network accessline 103
    - [`Switch`](https://developer.android.com/reference/android/widget/Switch)
  • Network accessline 105
    - [`RadioButton`](https://developer.android.com/reference/android/widget/RadioButton)
  • Network accessline 105
    - [`RadioButton`](https://developer.android.com/reference/android/widget/RadioButton)
  • Network accessline 107
    The widget is still stateless. Your app must store the state and register for state change events. ![Example of shopping list widget showing stateful behavior](https://developer.android.com/static/images/appwidgets/home.png) **Figure 3.** E
  • Network accessline 107
    The widget is still stateless. Your app must store the state and register for state change events. ![Example of shopping list widget showing stateful behavior](https://developer.android.com/static/images/appwidgets/home.png) **Figure 3.** E
  • Network accessline 109
    ![Example of shopping list widget showing stateful behavior](https://developer.android.com/static/images/appwidgets/home.png) **Figure 3.** Example of stateful behavior.
  • Network accessline 109
    ![Example of shopping list widget showing stateful behavior](https://developer.android.com/static/images/appwidgets/home.png) **Figure 3.** Example of stateful behavior.
  • Network accessline 144
    To implement corner radii or set up dynamic styles for older Android devices, see the Compose-first [Implement rounded corners section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#rounded-corner) in the Glance
  • Network accessline 144
    To implement corner radii or set up dynamic styles for older Android devices, see the Compose-first [Implement rounded corners section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#rounded-corner) in the Glance
  • Network accessline 145
    see the Compose-first [Implement rounded corners section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#rounded-corner) in the Glance
  • Network accessline 145
    see the Compose-first [Implement rounded corners section](https://developer.android.com/develop/ui/compose/glance/create-app-widget#rounded-corner) in the Glance
  • Network accessline 150
    Widgets run inside the home screen launcher process, and `system_server` enforces a per-widget bitmap memory ceiling (`6 * width * height` bytes; see the [Android 17 widget memory limit behavior change](https://developer.android.com/about/v
  • Network accessline 150
    Widgets run inside the home screen launcher process, and `system_server` enforces a per-widget bitmap memory ceiling (`6 * width * height` bytes; see the [Android 17 widget memory limit behavior change](https://developer.android.com/about/v
  • Network accessline 151
    enforces a per-widget bitmap memory ceiling (`6 * width * height` bytes; see the [Android 17 widget memory limit behavior change](https://developer.android.com/about/versions/17/behavior-changes-17#memory-limit-widget)). When building class
  • Network accessline 151
    enforces a per-widget bitmap memory ceiling (`6 * width * height` bytes; see the [Android 17 widget memory limit behavior change](https://developer.android.com/about/versions/17/behavior-changes-17#memory-limit-widget)). When building class
  • Network accessline 152
    [Android 17 widget memory limit behavior change](https://developer.android.com/about/versions/17/behavior-changes-17#memory-limit-widget)). When building classic
  • Network accessline 152
    [Android 17 widget memory limit behavior change](https://developer.android.com/about/versions/17/behavior-changes-17#memory-limit-widget)). When building classic

system/glance-appwidget-updates-and-memory/references/res/xml/sample_widget_info.xml

  • Network accessline 1
    <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 1
    <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 2
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 2
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/SKILL.md

  • Network accessline 84
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_action_list_preview.png](https://developer.android.com/static/agents/skills/system/
  • Network accessline 84
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_action_list_preview.png](https://developer.android.com/static/agents/skills/system/
  • Network accessline 85
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_action_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_acti
  • Network accessline 85
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_action_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_acti
  • Network accessline 86
    - **Drawables** : [sample_action_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_action_list_preview.png), [sample_home_icon.xml](references/res/drawa
  • Network accessline 86
    - **Drawables** : [sample_action_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_action_list_preview.png), [sample_home_icon.xml](references/res/drawa
  • Network accessline 100
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_check_list_preview.png](https://developer.android.com/static/agents/skills/system/g
  • Network accessline 100
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_check_list_preview.png](https://developer.android.com/static/agents/skills/system/g
  • Network accessline 101
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_check_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_check
  • Network accessline 101
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_check_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_check
  • Network accessline 102
    - **Drawables** : [sample_check_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_check_list_preview.png), [sample_pin_icon.xml](references/res/drawable
  • Network accessline 102
    - **Drawables** : [sample_check_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_check_list_preview.png), [sample_pin_icon.xml](references/res/drawable
  • Network accessline 115
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_expressive_toolbar_preview.png](https://developer.android.com/static/agents/skills/
  • Network accessline 115
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_expressive_toolbar_preview.png](https://developer.android.com/static/agents/skills/
  • Network accessline 116
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_expressive_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/samp
  • Network accessline 116
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_expressive_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/samp
  • Network accessline 117
    - **Drawables** : [sample_expressive_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_expressive_toolbar_preview.png), [four_side_cookie_background.
  • Network accessline 117
    - **Drawables** : [sample_expressive_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_expressive_toolbar_preview.png), [four_side_cookie_background.
  • Network accessline 131
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_image_grid_preview.png](https://developer.android.com/static/agents/skills/system/g
  • Network accessline 131
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_image_grid_preview.png](https://developer.android.com/static/agents/skills/system/g
  • Network accessline 132
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_image_grid_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_image
  • Network accessline 132
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_image_grid_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_image
  • Network accessline 133
    - **Drawables** : [sample_image_grid_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_image_grid_preview.png), [sample_placeholder_image.png](https://develo
  • Network accessline 133
    - **Drawables** : [sample_image_grid_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_image_grid_preview.png), [sample_placeholder_image.png](https://develo
  • Network accessline 146
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_image_text_list_preview.png](https://developer.android.com/static/agents/skills/sys
  • Network accessline 146
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_image_text_list_preview.png](https://developer.android.com/static/agents/skills/sys
  • Network accessline 147
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_image_text_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_
  • Network accessline 147
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_image_text_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_
  • Network accessline 148
    - **Drawables** : [sample_image_text_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_image_text_list_preview.png), [sample_placeholder_image.png](http
  • Network accessline 148
    - **Drawables** : [sample_image_text_list_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_image_text_list_preview.png), [sample_placeholder_image.png](http
  • Network accessline 162
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_long_text_preview.png](https://developer.android.com/static/agents/skills/system/gl
  • Network accessline 162
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_long_text_preview.png](https://developer.android.com/static/agents/skills/system/gl
  • Network accessline 163
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_long_text_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_long_t
  • Network accessline 163
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_long_text_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_long_t
  • Network accessline 164
    - **Drawables** : [sample_long_text_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_long_text_preview.png), [sample_text_icon.xml](references/res/drawable/
  • Network accessline 164
    - **Drawables** : [sample_long_text_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_long_text_preview.png), [sample_text_icon.xml](references/res/drawable/
  • Network accessline 176
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_search_toolbar_preview.png](https://developer.android.com/static/agents/skills/syst
  • Network accessline 176
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_search_toolbar_preview.png](https://developer.android.com/static/agents/skills/syst
  • Network accessline 177
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_search_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_s
  • Network accessline 177
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_search_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_s
  • Network accessline 178
    - **Drawables** : [sample_search_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_search_toolbar_preview.png), [sample_search_icon.xml](references/r
  • Network accessline 178
    - **Drawables** : [sample_search_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_search_toolbar_preview.png), [sample_search_icon.xml](references/r
  • Network accessline 191
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_full_bleed_image_preview.png](https://developer.android.com/static/agents/skills/sy
  • Network accessline 191
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_full_bleed_image_preview.png](https://developer.android.com/static/agents/skills/sy
  • Network accessline 192
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_full_bleed_image_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample
  • Network accessline 192
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_full_bleed_image_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample
  • Network accessline 193
    - **Drawables** : [sample_full_bleed_image_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_full_bleed_image_preview.png), [sample_scrim_gradient.xml](refer
  • Network accessline 193
    - **Drawables** : [sample_full_bleed_image_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_full_bleed_image_preview.png), [sample_scrim_gradient.xml](refer
  • Network accessline 207
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glan
  • Network accessline 207
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glan
  • Network accessline 208
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_toolbar_
  • Network accessline 208
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_toolbar_
  • Network accessline 209
    - **Drawables** : [sample_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_toolbar_preview.png), [sample_app_logo.xml](references/res/drawable/sampl
  • Network accessline 209
    - **Drawables** : [sample_toolbar_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_toolbar_preview.png), [sample_app_logo.xml](references/res/drawable/sampl
  • Network accessline 224
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_text_image_preview.png](https://developer.android.com/static/agents/skills/system/g
  • Network accessline 224
    - **Dimensions** : [dimens.xml](references/res/values/dimens.xml) - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_text_image_preview.png](https://developer.android.com/static/agents/skills/system/g
  • Network accessline 225
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_text_image_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_text_
  • Network accessline 225
    - **Strings** : [strings.xml](references/res/values/strings.xml) - **Drawables** : [sample_text_image_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_text_
  • Network accessline 226
    - **Drawables** : [sample_text_image_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_text_image_preview.png), [sample_text_icon.xml](references/res/drawabl
  • Network accessline 226
    - **Drawables** : [sample_text_image_preview.png](https://developer.android.com/static/agents/skills/system/glance-canonical-layouts/references/res/drawable-nodpi/sample_text_image_preview.png), [sample_text_icon.xml](references/res/drawabl

system/glance-canonical-layouts/references/ActionDemonstrationActivity.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/CanonicalLayoutActivity.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 180
    fun Description(modifier: Modifier = Modifier) {         val linkColor = MaterialTheme.colorScheme.primary         val url = "https://developer.android.com/design/ui/mobile/guides/widgets/layouts"
  • Network accessline 180
    fun Description(modifier: Modifier = Modifier) {         val linkColor = MaterialTheme.colorScheme.primary         val url = "https://developer.android.com/design/ui/mobile/guides/widgets/layouts"
  • Network accessline 182
    val url = "https://developer.android.com/design/ui/mobile/guides/widgets/layouts"
  • Network accessline 182
    val url = "https://developer.android.com/design/ui/mobile/guides/widgets/layouts"

system/glance-canonical-layouts/references/CollectionsKtx.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/collections/data/FakeImageGridDataRepository.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 137
    // Courtesy of https://unsplash.com/@iamliam
  • Network accessline 137
    // Courtesy of https://unsplash.com/@iamliam
  • Network accessline 140
    ImageGridItemBackendData(                 key = "1",                 imageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",
  • Network accessline 140
    ImageGridItemBackendData(                 key = "1",                 imageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",
  • Network accessline 141
    key = "1",                 imageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",                 imageContentDescription = "Flowers at a wedding reception",
  • Network accessline 141
    key = "1",                 imageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",                 imageContentDescription = "Flowers at a wedding reception",
  • Network accessline 142
    imageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",
  • Network accessline 142
    imageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",
  • Network accessline 147
    ImageGridItemBackendData(                 key = "2",                 imageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 147
    ImageGridItemBackendData(                 key = "2",                 imageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 148
    key = "2",                 imageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",                 imageContentDescription = "An up-close look at a Blushing Bride Protea flower.",
  • Network accessline 148
    key = "2",                 imageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",                 imageContentDescription = "An up-close look at a Blushing Bride Protea flower.",
  • Network accessline 149
    imageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 149
    imageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 154
    ImageGridItemBackendData(                 key = "3",                 imageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 154
    ImageGridItemBackendData(                 key = "3",                 imageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 155
    key = "3",                 imageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",                 imageContentDescription = "A single water droplet rests in a budding red pansy.",
  • Network accessline 155
    key = "3",                 imageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",                 imageContentDescription = "A single water droplet rests in a budding red pansy.",
  • Network accessline 156
    imageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 156
    imageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 161
    ImageGridItemBackendData(                 key = "4",                 imageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",
  • Network accessline 161
    ImageGridItemBackendData(                 key = "4",                 imageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",
  • Network accessline 162
    key = "4",                 imageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",                 imageContentDescription = "Blossom, petal, flower",
  • Network accessline 162
    key = "4",                 imageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",                 imageContentDescription = "Blossom, petal, flower",
  • Network accessline 163
    imageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",
  • Network accessline 163
    imageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",
  • Network accessline 168
    ImageGridItemBackendData(                 key = "5",                 imageUrl = "https://images.unsplash.com/photo-1565314912546-0d18918fdc8f",
  • Network accessline 168
    ImageGridItemBackendData(                 key = "5",                 imageUrl = "https://images.unsplash.com/photo-1565314912546-0d18918fdc8f",
  • Network accessline 169
    key = "5",                 imageUrl = "https://images.unsplash.com/photo-1565314912546-0d18918fdc8f",                 imageContentDescription = "Green plant, sky and flowers",
  • Network accessline 169
    key = "5",                 imageUrl = "https://images.unsplash.com/photo-1565314912546-0d18918fdc8f",                 imageContentDescription = "Green plant, sky and flowers",
  • Network accessline 170
    imageUrl = "https://images.unsplash.com/photo-1565314912546-0d18918fdc8f",
  • Network accessline 170
    imageUrl = "https://images.unsplash.com/photo-1565314912546-0d18918fdc8f",
  • Network accessline 175
    ImageGridItemBackendData(                 key = "6",                 imageUrl = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",
  • Network accessline 175
    ImageGridItemBackendData(                 key = "6",                 imageUrl = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",
  • Network accessline 176
    key = "6",                 imageUrl = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",                 imageContentDescription = "A snow-shoer walking up Strelapass",
  • Network accessline 176
    key = "6",                 imageUrl = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",                 imageContentDescription = "A snow-shoer walking up Strelapass",
  • Network accessline 177
    imageUrl = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",
  • Network accessline 177
    imageUrl = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",
  • Network accessline 182
    ImageGridItemBackendData(                 key = "7",                 imageUrl = "https://images.unsplash.com/photo-1671525737370-1d490286372e",
  • Network accessline 182
    ImageGridItemBackendData(                 key = "7",                 imageUrl = "https://images.unsplash.com/photo-1671525737370-1d490286372e",
  • Network accessline 183
    key = "7",                 imageUrl = "https://images.unsplash.com/photo-1671525737370-1d490286372e",                 imageContentDescription = "Davos at sunrise, viewed from Schatzalp",
  • Network accessline 183
    key = "7",                 imageUrl = "https://images.unsplash.com/photo-1671525737370-1d490286372e",                 imageContentDescription = "Davos at sunrise, viewed from Schatzalp",
  • Network accessline 184
    imageUrl = "https://images.unsplash.com/photo-1671525737370-1d490286372e",
  • Network accessline 184
    imageUrl = "https://images.unsplash.com/photo-1671525737370-1d490286372e",
  • Network accessline 189
    ImageGridItemBackendData(                 key = "8",                 imageUrl = "https://images.unsplash.com/photo-1629027272726-2eed15f90e8e",
  • Network accessline 189
    ImageGridItemBackendData(                 key = "8",                 imageUrl = "https://images.unsplash.com/photo-1629027272726-2eed15f90e8e",
  • Network accessline 190
    key = "8",                 imageUrl = "https://images.unsplash.com/photo-1629027272726-2eed15f90e8e",                 imageContentDescription = "Nasturtium plants",
  • Network accessline 190
    key = "8",                 imageUrl = "https://images.unsplash.com/photo-1629027272726-2eed15f90e8e",                 imageContentDescription = "Nasturtium plants",
  • Network accessline 191
    imageUrl = "https://images.unsplash.com/photo-1629027272726-2eed15f90e8e",
  • Network accessline 191
    imageUrl = "https://images.unsplash.com/photo-1629027272726-2eed15f90e8e",

system/glance-canonical-layouts/references/collections/data/FakeImageTextListDataRepository.kt

  • Network accessline 133
    // Courtesy of https://unsplash.com/@iamliam
  • Network accessline 133
    // Courtesy of https://unsplash.com/@iamliam
  • Network accessline 137
    title = "Flowers at a wedding reception",               supportingText = "33,822 views",               supportingImageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12"
  • Network accessline 137
    title = "Flowers at a wedding reception",               supportingText = "33,822 views",               supportingImageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12"
  • Network accessline 138
    supportingText = "33,822 views",               supportingImageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12"           ),
  • Network accessline 138
    supportingText = "33,822 views",               supportingImageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12"           ),
  • Network accessline 139
    supportingImageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12"
  • Network accessline 139
    supportingImageUrl = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12"
  • Network accessline 143
    title = "An up-close look at a Blushing Bride Protea flower.",               supportingText = "31,072 views",               supportingImageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 143
    title = "An up-close look at a Blushing Bride Protea flower.",               supportingText = "31,072 views",               supportingImageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 144
    supportingText = "31,072 views",               supportingImageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",           ),
  • Network accessline 144
    supportingText = "31,072 views",               supportingImageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",           ),
  • Network accessline 145
    supportingImageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 145
    supportingImageUrl = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 147
    DemoDataItem(               key = "3",               supportingImageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 147
    DemoDataItem(               key = "3",               supportingImageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 148
    key = "3",               supportingImageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",               title = "A single water droplet rests in a budding red pansy.",
  • Network accessline 148
    key = "3",               supportingImageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",               title = "A single water droplet rests in a budding red pansy.",
  • Network accessline 149
    supportingImageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 149
    supportingImageUrl = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 155
    title = "Blossom, petal, flower",               supportingText = "23,815 views",               supportingImageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",
  • Network accessline 155
    title = "Blossom, petal, flower",               supportingText = "23,815 views",               supportingImageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",
  • Network accessline 156
    supportingText = "23,815 views",               supportingImageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",           ),
  • Network accessline 156
    supportingText = "23,815 views",               supportingImageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",           ),
  • Network accessline 157
    supportingImageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",
  • Network accessline 157
    supportingImageUrl = "https://images.unsplash.com/photo-1582817954171-c3533fffde89",
  • Network accessline 161
    title = "Orchids at New York Botanical Garden",               supportingText = "205,481 views",               supportingImageUrl = "https://images.unsplash.com/photo-1565357153781-98bf8686488a",
  • Network accessline 161
    title = "Orchids at New York Botanical Garden",               supportingText = "205,481 views",               supportingImageUrl = "https://images.unsplash.com/photo-1565357153781-98bf8686488a",
  • Network accessline 162
    supportingText = "205,481 views",               supportingImageUrl = "https://images.unsplash.com/photo-1565357153781-98bf8686488a",           ),
  • Network accessline 162
    supportingText = "205,481 views",               supportingImageUrl = "https://images.unsplash.com/photo-1565357153781-98bf8686488a",           ),
  • Network accessline 163
    supportingImageUrl = "https://images.unsplash.com/photo-1565357153781-98bf8686488a",
  • Network accessline 163
    supportingImageUrl = "https://images.unsplash.com/photo-1565357153781-98bf8686488a",
  • Network accessline 167
    title = "Tabletop composition with flower",               supportingText = "85,060 views",               supportingImageUrl = "https://images.unsplash.com/photo-1591404789216-d03646c78f73",
  • Network accessline 167
    title = "Tabletop composition with flower",               supportingText = "85,060 views",               supportingImageUrl = "https://images.unsplash.com/photo-1591404789216-d03646c78f73",
  • Network accessline 168
    supportingText = "85,060 views",               supportingImageUrl = "https://images.unsplash.com/photo-1591404789216-d03646c78f73",           ),
  • Network accessline 168
    supportingText = "85,060 views",               supportingImageUrl = "https://images.unsplash.com/photo-1591404789216-d03646c78f73",           ),
  • Network accessline 169
    supportingImageUrl = "https://images.unsplash.com/photo-1591404789216-d03646c78f73",
  • Network accessline 169
    supportingImageUrl = "https://images.unsplash.com/photo-1591404789216-d03646c78f73",
  • Network accessline 173
    title = "Wild bee on flower",               supportingText = "6,692 views",               supportingImageUrl = "https://images.unsplash.com/photo-1653927050791-5fc981435d12",
  • Network accessline 173
    title = "Wild bee on flower",               supportingText = "6,692 views",               supportingImageUrl = "https://images.unsplash.com/photo-1653927050791-5fc981435d12",
  • Network accessline 174
    supportingText = "6,692 views",               supportingImageUrl = "https://images.unsplash.com/photo-1653927050791-5fc981435d12",           ),
  • Network accessline 174
    supportingText = "6,692 views",               supportingImageUrl = "https://images.unsplash.com/photo-1653927050791-5fc981435d12",           ),
  • Network accessline 175
    supportingImageUrl = "https://images.unsplash.com/photo-1653927050791-5fc981435d12",
  • Network accessline 175
    supportingImageUrl = "https://images.unsplash.com/photo-1653927050791-5fc981435d12",
  • Network accessline 179
    title = "Flowers on a vine",               supportingText = "31,862 views",               supportingImageUrl = "https://images.unsplash.com/photo-1531307119710-accdb402fe03",
  • Network accessline 179
    title = "Flowers on a vine",               supportingText = "31,862 views",               supportingImageUrl = "https://images.unsplash.com/photo-1531307119710-accdb402fe03",
  • Network accessline 180
    supportingText = "31,862 views",               supportingImageUrl = "https://images.unsplash.com/photo-1531307119710-accdb402fe03",           ),
  • Network accessline 180
    supportingText = "31,862 views",               supportingImageUrl = "https://images.unsplash.com/photo-1531307119710-accdb402fe03",           ),
  • Network accessline 181
    supportingImageUrl = "https://images.unsplash.com/photo-1531307119710-accdb402fe03",
  • Network accessline 181
    supportingImageUrl = "https://images.unsplash.com/photo-1531307119710-accdb402fe03",

system/glance-canonical-layouts/references/res/drawable/four_side_cookie_background.xml

  • Network accessline 7
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 9
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 18
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 18
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/drawable/sample_ac_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/drawable/sample_add_icon.xml

  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_app_logo.xml

  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/drawable/sample_arrow_right_icon.xml

  • Network accessline 1
    <vector android:autoMirrored="true" android:height="24dp"     android:tint="#000000" android:viewportHeight="24"     android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:autoMirrored="true" android:height="24dp"     android:tint="#000000" android:viewportHeight="24"     android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:tint="#000000" android:viewportHeight="24"     android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M8.59,16
  • Network accessline 2
    android:tint="#000000" android:viewportHeight="24"     android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M8.59,16
  • Network accessline 3
    android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_bulb_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/drawable/sample_camera_icon.xml

  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    ~ limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    ~ limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/drawable/sample_checked_circle_icon.xml

  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,1
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,1
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_circle_icon.xml

  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,1
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,1
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_delete_icon.xml

  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_door_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/drawable/sample_edit_icon.xml

  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M3,17.25l0,3.75l3.75,0l11.06,-1
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M3,17.25l0,3.75l3.75,0l11.06,-1
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_file_upload_icon.xml

  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 17
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 17
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/drawable/sample_grid_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="960" android:viewportWidth="960" android:width="24dp">
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="960" android:viewportWidth="960" android:width="24dp">

system/glance-canonical-layouts/references/res/drawable/sample_heart_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="#000000">
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="#000000">

system/glance-canonical-layouts/references/res/drawable/sample_home_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="960" android:viewportWidth="960" android:width="24dp">
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="960" android:viewportWidth="960" android:width="24dp">

system/glance-canonical-layouts/references/res/drawable/sample_image_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="960" android:viewportWidth="960" android:width="24dp">
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="960" android:viewportWidth="960" android:width="24dp">

system/glance-canonical-layouts/references/res/drawable/sample_info_icon.xml

  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M11,7h2v2h-2V7zM11,11h2v6h-2V11
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M11,7h2v2h-2V7zM11,11h2v6h-2V11
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_mic_icon.xml

  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    ~ limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    ~ limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/drawable/sample_no_data_icon.xml

  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M19,6v10.5l1.95,1.95C20.98,18.3
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M19,6v10.5l1.95,1.95C20.98,18.3
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_pin_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">

system/glance-canonical-layouts/references/res/drawable/sample_power_settings_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">

system/glance-canonical-layouts/references/res/drawable/sample_refresh_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">

system/glance-canonical-layouts/references/res/drawable/sample_scrim_gradient.xml

  • Network accessline 9
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 15
    limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:aapt="http://schemas.android.com/aapt"
  • Network accessline 16
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:aapt="http://schemas.android.com/aapt"
  • Network accessline 17
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 17
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 18
    xmlns:aapt="http://schemas.android.com/aapt"
  • Network accessline 18
    xmlns:aapt="http://schemas.android.com/aapt"

system/glance-canonical-layouts/references/res/drawable/sample_search_icon.xml

  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    ~ limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    ~ limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/drawable/sample_share_icon.xml

  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_snooze_icon.xml

  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 1
    <vector android:height="24dp" android:tint="#000000"     android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M7.88,3.39L6.6,1.86 2,5.71l1.29
  • Network accessline 2
    android:viewportHeight="24" android:viewportWidth="24"     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">     <path android:fillColor="@android:color/white" android:pathData="M7.88,3.39L6.6,1.86 2,5.71l1.29
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 3
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">

system/glance-canonical-layouts/references/res/drawable/sample_text_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">

system/glance-canonical-layouts/references/res/drawable/sample_thermostat_icon.xml

  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="#000000">
  • Network accessline 1
    <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960" android:tint="#000000">

system/glance-canonical-layouts/references/res/drawable/sample_videocam_icon.xml

  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    ~ limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    ~ limitations under the License.   --> <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 15
    --> <vector xmlns:android="http://schemas.android.com/apk/res/android"     android:width="24dp"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <vector xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/values/dimens.xml

  • Network accessline 7
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 9
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 25
    <!-- Reference:     https://developer.android.com/design/ui/mobile/guides/widgets/sizing#handheld
  • Network accessline 25
    <!-- Reference:     https://developer.android.com/design/ui/mobile/guides/widgets/sizing#handheld
  • Network accessline 26
    https://developer.android.com/design/ui/mobile/guides/widgets/sizing#handheld
  • Network accessline 26
    https://developer.android.com/design/ui/mobile/guides/widgets/sizing#handheld

system/glance-canonical-layouts/references/res/values/strings.xml

  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/res/xml/sample_action_list_widget_info.xml

  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 19
    * no max limits as we turn list to a grid to support larger screens --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 19
    * no max limits as we turn list to a grid to support larger screens --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 20
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 20
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 21
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 21
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/xml/sample_check_list_widget_info.xml

  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 20
    --> <!-- For a checklist, a small size widget suffices for default drop. --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 20
    --> <!-- For a checklist, a small size widget suffices for default drop. --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 21
    <!-- For a checklist, a small size widget suffices for default drop. --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 21
    <!-- For a checklist, a small size widget suffices for default drop. --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 22
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 22
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/xml/sample_expressive_toolbar_widget_info.xml

  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    ~ limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    ~ limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/xml/sample_full_bleed_image_widget_info.xml

  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/xml/sample_image_grid_widget_info.xml

  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 19
    * no max limits as we turn list to a grid to support larger screens --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 19
    * no max limits as we turn list to a grid to support larger screens --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 20
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 20
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 21
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 21
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/xml/sample_image_text_list_widget_info.xml

  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 19
    * no max limits as we turn list to a grid to support larger screens --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 19
    * no max limits as we turn list to a grid to support larger screens --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 20
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 20
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 21
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 21
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/xml/sample_long_text_widget_info.xml

  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/xml/sample_search_toolbar_widget_info.xml

  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/xml/sample_text_with_image_widget_info.xml

  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/res/xml/sample_toolbar_widget_info.xml

  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    ~ You may obtain a copy of the License at   ~   ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 7
    ~   ~     https://www.apache.org/licenses/LICENSE-2.0   ~
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    ~     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 14
    ~ limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 14
    ~ limitations under the License.   --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 15
    --> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     android:initialLayout="@layout/glance_default_loading_layout"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 16
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"

system/glance-canonical-layouts/references/text/FullBleedImageAppWidget.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/text/LongTextAppWidget.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/text/TextWithImageAppWidget.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/text/data/FakeLongTextRespository.kt

  • Network accessline 61
    // Lorem ipsum text generated with https://loremipsum.io/
  • Network accessline 61
    // Lorem ipsum text generated with https://loremipsum.io/

system/glance-canonical-layouts/references/text/data/FakeTextWithImageRepository.kt

  • Network accessline 121
    // Courtesy of https://unsplash.com/@iamliam
  • Network accessline 121
    // Courtesy of https://unsplash.com/@iamliam
  • Network accessline 125
    secondary = "Golden light washes over the alpine village of Davos, a breathtaking view unfolding from Schatzalp's vantage point.",               caption = "33,822 views",               url = "https://images.unsplash.com/photo-1671525737370-
  • Network accessline 125
    secondary = "Golden light washes over the alpine village of Davos, a breathtaking view unfolding from Schatzalp's vantage point.",               caption = "33,822 views",               url = "https://images.unsplash.com/photo-1671525737370-
  • Network accessline 126
    caption = "33,822 views",               url = "https://images.unsplash.com/photo-1671525737370-1d490286372e",               imageContentDescription = "Davos at sunrise, viewed from Schatzalp",
  • Network accessline 126
    caption = "33,822 views",               url = "https://images.unsplash.com/photo-1671525737370-1d490286372e",               imageContentDescription = "Davos at sunrise, viewed from Schatzalp",
  • Network accessline 127
    url = "https://images.unsplash.com/photo-1671525737370-1d490286372e",
  • Network accessline 127
    url = "https://images.unsplash.com/photo-1671525737370-1d490286372e",
  • Network accessline 132
    secondary = "I took this photo at a wedding reception. The flowers were in a vase next to a window",               caption = "33,822 views",               url = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",
  • Network accessline 132
    secondary = "I took this photo at a wedding reception. The flowers were in a vase next to a window",               caption = "33,822 views",               url = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",
  • Network accessline 133
    caption = "33,822 views",               url = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",               imageContentDescription = "Flowers at a wedding reception",
  • Network accessline 133
    caption = "33,822 views",               url = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",               imageContentDescription = "Flowers at a wedding reception",
  • Network accessline 134
    url = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",
  • Network accessline 134
    url = "https://images.unsplash.com/photo-1531306760863-7fb02a41db12",
  • Network accessline 139
    secondary = "An up-close look at a Blushing Bride Protea flower, native to South Africa",               caption = "31,072 views",               url = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 139
    secondary = "An up-close look at a Blushing Bride Protea flower, native to South Africa",               caption = "31,072 views",               url = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 140
    caption = "31,072 views",               url = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",               imageContentDescription = "Blushing Bride flower",
  • Network accessline 140
    caption = "31,072 views",               url = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",               imageContentDescription = "Blushing Bride flower",
  • Network accessline 141
    url = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 141
    url = "https://images.unsplash.com/photo-1566964423430-3e52903303a5",
  • Network accessline 146
    secondary = "A snow-shoer walking up Strelapass on snow lined with deep trails from skiiers",               caption = "15 min",               url = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",
  • Network accessline 146
    secondary = "A snow-shoer walking up Strelapass on snow lined with deep trails from skiiers",               caption = "15 min",               url = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",
  • Network accessline 147
    caption = "15 min",               url = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",               imageContentDescription = "A snow-shoer walking up Strelapass on snow lined with deep trails from skiiers",
  • Network accessline 147
    caption = "15 min",               url = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",               imageContentDescription = "A snow-shoer walking up Strelapass on snow lined with deep trails from skiiers",
  • Network accessline 148
    url = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",
  • Network accessline 148
    url = "https://images.unsplash.com/photo-1671525784444-392a8f8daa3f",
  • Network accessline 153
    secondary = "Secrets held within a drop: A microcosm of beauty in a world of red.",               caption = "193 views",               url = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 153
    secondary = "Secrets held within a drop: A microcosm of beauty in a world of red.",               caption = "193 views",               url = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 154
    caption = "193 views",               url = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",               imageContentDescription = "A single water droplet rests in a budding red pansy.",
  • Network accessline 154
    caption = "193 views",               url = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",               imageContentDescription = "A single water droplet rests in a budding red pansy.",
  • Network accessline 155
    url = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",
  • Network accessline 155
    url = "https://images.unsplash.com/photo-1685540466252-8c21e7c37624",

system/glance-canonical-layouts/references/text/layout/FullBleedImageLayout.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/text/layout/LongTextLayout.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/toolbars/ExpressiveToolbarAppWidget.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/toolbars/SearchToolBarAppWidget.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/toolbars/ToolBarAppWidget.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/toolbars/layout/Buttons.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 128
    /**  * Defines the roundness of a shape inline with the tokens used in M3  * https://m3.material.io/styles/shape/shape-scale-tokens
  • Network accessline 128
    /**  * Defines the roundness of a shape inline with the tokens used in M3  * https://m3.material.io/styles/shape/shape-scale-tokens
  • Network accessline 129
    * Defines the roundness of a shape inline with the tokens used in M3  * https://m3.material.io/styles/shape/shape-scale-tokens  */
  • Network accessline 129
    * Defines the roundness of a shape inline with the tokens used in M3  * https://m3.material.io/styles/shape/shape-scale-tokens  */
  • Network accessline 130
    * https://m3.material.io/styles/shape/shape-scale-tokens
  • Network accessline 130
    * https://m3.material.io/styles/shape/shape-scale-tokens

system/glance-canonical-layouts/references/toolbars/layout/ExpressiveToolbarLayout.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 56
    * Uses a 4-sided cookie cutout as the background shape of the widget - the shape fits at-least two  * vertical or two horizontal edges to meet the quality criteria; see  * https://developer.android.com/design/ui/mobile/guides/widgets/widget
  • Network accessline 56
    * Uses a 4-sided cookie cutout as the background shape of the widget - the shape fits at-least two  * vertical or two horizontal edges to meet the quality criteria; see  * https://developer.android.com/design/ui/mobile/guides/widgets/widget
  • Network accessline 57
    * vertical or two horizontal edges to meet the quality criteria; see  * https://developer.android.com/design/ui/mobile/guides/widgets/widget_quality_guide  *
  • Network accessline 57
    * vertical or two horizontal edges to meet the quality criteria; see  * https://developer.android.com/design/ui/mobile/guides/widgets/widget_quality_guide  *
  • Network accessline 58
    * https://developer.android.com/design/ui/mobile/guides/widgets/widget_quality_guide
  • Network accessline 58
    * https://developer.android.com/design/ui/mobile/guides/widgets/widget_quality_guide

system/glance-canonical-layouts/references/toolbars/layout/LayoutComponents.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/toolbars/layout/SearchToolBarLayout.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/toolbars/layout/ToolBarLayout.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0

system/glance-canonical-layouts/references/utils/FontUtils.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 35
    // An alternate implementation can extract the logic from following reference instead of using a   // textView.   // https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:appcompat/appcompat/src/main/java/androidx/appc
  • Network accessline 35
    // An alternate implementation can extract the logic from following reference instead of using a   // textView.   // https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:appcompat/appcompat/src/main/java/androidx/appc
  • Network accessline 37
    // https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextViewAutoSizeHelper.java;l=679;drc=573d69d7458c96885cdcbbf8471e24dd8d293997
  • Network accessline 37
    // https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:appcompat/appcompat/src/main/java/androidx/appcompat/widget/AppCompatTextViewAutoSizeHelper.java;l=679;drc=573d69d7458c96885cdcbbf8471e24dd8d293997

system/glance-canonical-layouts/references/utils/ImageUtils.kt

  • Network accessline 20
    * Loads the image resource as bitmap by scaling for the requested size and enforcing    * the per-image AppWidget memory ceiling.    * https://developer.android.com/topic/performance/graphics/load-bitmap#load-bitmap
  • Network accessline 20
    * Loads the image resource as bitmap by scaling for the requested size and enforcing    * the per-image AppWidget memory ceiling.    * https://developer.android.com/topic/performance/graphics/load-bitmap#load-bitmap
  • Network accessline 21
    * the per-image AppWidget memory ceiling.    * https://developer.android.com/topic/performance/graphics/load-bitmap#load-bitmap    */
  • Network accessline 21
    * the per-image AppWidget memory ceiling.    * https://developer.android.com/topic/performance/graphics/load-bitmap#load-bitmap    */
  • Network accessline 22
    * https://developer.android.com/topic/performance/graphics/load-bitmap#load-bitmap
  • Network accessline 22
    * https://developer.android.com/topic/performance/graphics/load-bitmap#load-bitmap

system/glance-canonical-layouts/references/utils/PreviewAnnotations.kt

  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 6
    * You may obtain a copy of the License at  *  *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 7
    *  *     https://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *     https://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 23
    * Previews for 2x2 sized widgets in handheld and tablets.  *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 23
    * Previews for 2x2 sized widgets in handheld and tablets.  *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 24
    *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing  */
  • Network accessline 24
    *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing  */
  • Network accessline 25
    * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 25
    * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 40
    * Previews for 4x2 handheld and 3x2 tablet widgets.  *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 40
    * Previews for 4x2 handheld and 3x2 tablet widgets.  *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 41
    *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing  */
  • Network accessline 41
    *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing  */
  • Network accessline 42
    * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 42
    * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 57
    * Previews for 4x3 handheld and 3x3 tablet widgets.  *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 57
    * Previews for 4x3 handheld and 3x3 tablet widgets.  *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 58
    *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing  */
  • Network accessline 58
    *  * https://developer.android.com/design/ui/mobile/guides/widgets/sizing  */
  • Network accessline 59
    * https://developer.android.com/design/ui/mobile/guides/widgets/sizing
  • Network accessline 59
    * https://developer.android.com/design/ui/mobile/guides/widgets/sizing

testing/testing-setup/SKILL.md

  • Network accessline 50
    > [!IMPORTANT] > **Important:** Always consult the documentation of the applicable framework to learn about testing (for example: [Hilt testing guide](references/android/training/dependency-injection/hilt-testing.md), [Koin Instrumented tes
  • Network accessline 50
    > [!IMPORTANT] > **Important:** Always consult the documentation of the applicable framework to learn about testing (for example: [Hilt testing guide](references/android/training/dependency-injection/hilt-testing.md), [Koin Instrumented tes
  • Network accessline 51
    > **Important:** Always consult the documentation of the applicable framework to learn about testing (for example: [Hilt testing guide](references/android/training/dependency-injection/hilt-testing.md), [Koin Instrumented tests](https://ins
  • Network accessline 51
    > **Important:** Always consult the documentation of the applicable framework to learn about testing (for example: [Hilt testing guide](references/android/training/dependency-injection/hilt-testing.md), [Koin Instrumented tests](https://ins
  • Network accessline 180
    If you need to take screenshots of the app running in a device, use [Dropshots](https://raw.githubusercontent.com/dropbox/dropshots/refs/heads/main/README.md). You need a device for screenshot tests when verifying
  • Network accessline 180
    If you need to take screenshots of the app running in a device, use [Dropshots](https://raw.githubusercontent.com/dropbox/dropshots/refs/heads/main/README.md). You need a device for screenshot tests when verifying
  • Network accessline 181
    [Dropshots](https://raw.githubusercontent.com/dropbox/dropshots/refs/heads/main/README.md). You need a device for screenshot tests when verifying
  • Network accessline 181
    [Dropshots](https://raw.githubusercontent.com/dropbox/dropshots/refs/heads/main/README.md). You need a device for screenshot tests when verifying

testing/testing-setup/references/android/develop/ui/compose/testing/common-patterns.md

  • Network accessline 1
    [Video](https://www.youtube.com/watch?v=Y9GWnwi9D0I)
  • Network accessline 1
    [Video](https://www.youtube.com/watch?v=Y9GWnwi9D0I)
  • Network accessline 7
    [`ComposeTestRule`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/junit4/ComposeTestRule) lets you start an activity displaying any composable:
  • Network accessline 7
    [`ComposeTestRule`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/junit4/ComposeTestRule) lets you start an activity displaying any composable:
  • Network accessline 23
    A common pattern to achieve this is to create an `AndroidComposeTestRule` using an empty activity such as [`ComponentActivity`](https://developer.android.com/reference/androidx/activity/ComponentActivity).
  • Network accessline 23
    A common pattern to achieve this is to create an `AndroidComposeTestRule` using an empty activity such as [`ComponentActivity`](https://developer.android.com/reference/androidx/activity/ComponentActivity).
  • Network accessline 24
    an empty activity such as [`ComponentActivity`](https://developer.android.com/reference/androidx/activity/ComponentActivity).
  • Network accessline 24
    an empty activity such as [`ComponentActivity`](https://developer.android.com/reference/androidx/activity/ComponentActivity).
  • Network accessline 52
    You can create custom [semantics](https://developer.android.com/develop/ui/compose/testing/semantics) properties to expose information to tests.
  • Network accessline 52
    You can create custom [semantics](https://developer.android.com/develop/ui/compose/testing/semantics) properties to expose information to tests.
  • Network accessline 79
    Verify that the state of your Compose elements is correctly restored when the activity or process is recreated. Perform such checks without relying on activity recreation with the [`StateRestorationTester`](https://developer.android.com/ref
  • Network accessline 79
    Verify that the state of your Compose elements is correctly restored when the activity or process is recreated. Perform such checks without relying on activity recreation with the [`StateRestorationTester`](https://developer.android.com/ref
  • Network accessline 81
    activity recreation with the [`StateRestorationTester`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/junit4/StateRestorationTester) class.
  • Network accessline 81
    activity recreation with the [`StateRestorationTester`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/junit4/StateRestorationTester) class.
  • Network accessline 83
    This class lets you simulate the recreation of a composable. It's especially useful to verify the implementation of [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.compo
  • Network accessline 83
    This class lets you simulate the recreation of a composable. It's especially useful to verify the implementation of [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.compo
  • Network accessline 84
    useful to verify the implementation of [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,k
  • Network accessline 84
    useful to verify the implementation of [`rememberSaveable`](https://developer.android.com/reference/kotlin/androidx/compose/runtime/saveable/rememberSaveable.composable#rememberSaveable(kotlin.Array,androidx.compose.runtime.saveable.Saver,k
  • Network accessline 110
    font sizes, dark and light themes, and more. Most of these conditions are derived from device-level values controlled by the user and exposed with the current [`Configuration`](https://developer.android.com/reference/android/content/res/Con
  • Network accessline 110
    font sizes, dark and light themes, and more. Most of these conditions are derived from device-level values controlled by the user and exposed with the current [`Configuration`](https://developer.android.com/reference/android/content/res/Con
  • Network accessline 111
    derived from device-level values controlled by the user and exposed with the current [`Configuration`](https://developer.android.com/reference/android/content/res/Configuration) instance. Testing different configurations directly in a test 
  • Network accessline 111
    derived from device-level values controlled by the user and exposed with the current [`Configuration`](https://developer.android.com/reference/android/content/res/Configuration) instance. Testing different configurations directly in a test 
  • Network accessline 112
    current [`Configuration`](https://developer.android.com/reference/android/content/res/Configuration) instance. Testing different configurations
  • Network accessline 112
    current [`Configuration`](https://developer.android.com/reference/android/content/res/Configuration) instance. Testing different configurations
  • Network accessline 116
    [`DeviceConfigurationOverride`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride) is a test-only API that lets you simulate
  • Network accessline 116
    [`DeviceConfigurationOverride`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride) is a test-only API that lets you simulate
  • Network accessline 123
    - [`DeviceConfigurationOverride.DarkMode()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).DarkMode(kotlin.Bool
  • Network accessline 123
    - [`DeviceConfigurationOverride.DarkMode()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).DarkMode(kotlin.Bool
  • Network accessline 124
    - [`DeviceConfigurationOverride.FontScale()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).FontScale(kotlin.Fl
  • Network accessline 124
    - [`DeviceConfigurationOverride.FontScale()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).FontScale(kotlin.Fl
  • Network accessline 125
    scale](https://developer.android.com/training/multiscreen/screendensities#TaskUseDP).
  • Network accessline 125
    scale](https://developer.android.com/training/multiscreen/screendensities#TaskUseDP).
  • Network accessline 126
    - [`DeviceConfigurationOverride.FontWeightAdjustment()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).FontWeig
  • Network accessline 126
    - [`DeviceConfigurationOverride.FontWeightAdjustment()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).FontWeig
  • Network accessline 127
    - [`DeviceConfigurationOverride.ForcedSize()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).ForcedSize(android
  • Network accessline 127
    - [`DeviceConfigurationOverride.ForcedSize()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).ForcedSize(android
  • Network accessline 128
    - [`DeviceConfigurationOverride.LayoutDirection()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).LayoutDirecti
  • Network accessline 128
    - [`DeviceConfigurationOverride.LayoutDirection()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).LayoutDirecti
  • Network accessline 129
    direction](https://developer.android.com/training/basics/supporting-devices/languages#SupportLayoutMirroring) (left-to-right or right-to-left).
  • Network accessline 129
    direction](https://developer.android.com/training/basics/supporting-devices/languages#SupportLayoutMirroring) (left-to-right or right-to-left).
  • Network accessline 130
    - [`DeviceConfigurationOverride.Locales()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).Locales(androidx.comp
  • Network accessline 130
    - [`DeviceConfigurationOverride.Locales()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).Locales(androidx.comp
  • Network accessline 131
    - [`DeviceConfigurationOverride.RoundScreen()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).RoundScreen(kotli
  • Network accessline 131
    - [`DeviceConfigurationOverride.RoundScreen()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.Companion#(androidx.compose.ui.test.DeviceConfigurationOverride.Companion).RoundScreen(kotli
  • Network accessline 133
    To apply a specific override, wrap the content under test in a call to the [`DeviceConfigurationOverride()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.composable#DeviceConfigurationO
  • Network accessline 133
    To apply a specific override, wrap the content under test in a call to the [`DeviceConfigurationOverride()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.composable#DeviceConfigurationO
  • Network accessline 134
    [`DeviceConfigurationOverride()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.composable#DeviceConfigurationOverride(androidx.compose.ui.test.DeviceConfigurationOverride,kotlin.Functio
  • Network accessline 134
    [`DeviceConfigurationOverride()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride.composable#DeviceConfigurationOverride(androidx.compose.ui.test.DeviceConfigurationOverride,kotlin.Functio
  • Network accessline 156
    To apply multiple overrides together, use [`DeviceConfigurationOverride.then()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride#(androidx.compose.ui.test.DeviceConfigurationOverride).then
  • Network accessline 156
    To apply multiple overrides together, use [`DeviceConfigurationOverride.then()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride#(androidx.compose.ui.test.DeviceConfigurationOverride).then
  • Network accessline 157
    [`DeviceConfigurationOverride.then()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride#(androidx.compose.ui.test.DeviceConfigurationOverride).then(androidx.compose.ui.test.DeviceConfigurat
  • Network accessline 157
    [`DeviceConfigurationOverride.then()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/DeviceConfigurationOverride#(androidx.compose.ui.test.DeviceConfigurationOverride).then(androidx.compose.ui.test.DeviceConfigurat
  • Network accessline 182
    > [!NOTE] > **Note:** The APIs associated with the failure handler pipeline ([`TestFailurePolicy`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy), [`TestFailureHandler`](https://developer.android.
  • Network accessline 182
    > [!NOTE] > **Note:** The APIs associated with the failure handler pipeline ([`TestFailurePolicy`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy), [`TestFailureHandler`](https://developer.android.
  • Network accessline 183
    > **Note:** The APIs associated with the failure handler pipeline ([`TestFailurePolicy`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy), [`TestFailureHandler`](https://developer.android.com/refere
  • Network accessline 183
    > **Note:** The APIs associated with the failure handler pipeline ([`TestFailurePolicy`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy), [`TestFailureHandler`](https://developer.android.com/refere
  • Network accessline 187
    To configure failure handling, pass a [`TestFailurePolicy`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy) object to
  • Network accessline 187
    To configure failure handling, pass a [`TestFailurePolicy`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy) object to
  • Network accessline 188
    [`ComposeUiTestConfig`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig).
  • Network accessline 188
    [`ComposeUiTestConfig`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/ComposeUiTestConfig).
  • Network accessline 192
    To capture screenshots and UI hierarchies upon test failure, set the [`screenshotCaptureMode`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy#screenshotCaptureMode()) and [`uiHierarchyCaptureMode`]
  • Network accessline 192
    To capture screenshots and UI hierarchies upon test failure, set the [`screenshotCaptureMode`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy#screenshotCaptureMode()) and [`uiHierarchyCaptureMode`]
  • Network accessline 193
    [`screenshotCaptureMode`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy#screenshotCaptureMode()) and [`uiHierarchyCaptureMode`](https://developer.android.com/reference/kotlin/androidx/compose/ui/t
  • Network accessline 193
    [`screenshotCaptureMode`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy#screenshotCaptureMode()) and [`uiHierarchyCaptureMode`](https://developer.android.com/reference/kotlin/androidx/compose/ui/t
  • Network accessline 217
    To define custom behavior for test failures, add a [`TestFailureHandler`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailureHandler) to the [`failureHandlers` list](https://developer.android.com/reference/ko
  • Network accessline 217
    To define custom behavior for test failures, add a [`TestFailureHandler`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailureHandler) to the [`failureHandlers` list](https://developer.android.com/reference/ko
  • Network accessline 218
    [`TestFailureHandler`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailureHandler) to the [`failureHandlers` list](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy#fai
  • Network accessline 218
    [`TestFailureHandler`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailureHandler) to the [`failureHandlers` list](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/TestFailurePolicy#fai
  • Network accessline 219
    receives a [`FailureContext`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/FailureContext) object that contains the original error and a
  • Network accessline 219
    receives a [`FailureContext`](https://developer.android.com/reference/kotlin/androidx/compose/ui/test/FailureContext) object that contains the original error and a
  • Network accessline 273
    - **[Test apps on Android](https://developer.android.com/training/testing)**: The main Android testing landing page provides a broader view of testing fundamentals and techniques.
  • Network accessline 273
    - **[Test apps on Android](https://developer.android.com/training/testing)**: The main Android testing landing page provides a broader view of testing fundamentals and techniques.
  • Network accessline 274
    - **[Fundamentals of testing](https://developer.android.com/training/testing/fundamentals):** Learn more about the core concepts behind testing an Android app.
  • Network accessline 274
    - **[Fundamentals of testing](https://developer.android.com/training/testing/fundamentals):** Learn more about the core concepts behind testing an Android app.
  • Network accessline 275
    - **[Local tests](https://developer.android.com/training/testing/local-tests):** You can run some tests locally, on your own workstation.
  • Network accessline 275
    - **[Local tests](https://developer.android.com/training/testing/local-tests):** You can run some tests locally, on your own workstation.
  • Network accessline 276
    - **[Instrumented tests](https://developer.android.com/training/testing/instrumented-tests):** It is good practice to also run instrumented tests. That is, tests that run directly on-device.
  • Network accessline 276
    - **[Instrumented tests](https://developer.android.com/training/testing/instrumented-tests):** It is good practice to also run instrumented tests. That is, tests that run directly on-device.
  • Network accessline 277
    - **[Continuous integration](https://developer.android.com/training/testing/continuous-integration):** Continuous integration lets you integrate your tests into your deployment pipeline.
  • Network accessline 277
    - **[Continuous integration](https://developer.android.com/training/testing/continuous-integration):** Continuous integration lets you integrate your tests into your deployment pipeline.
  • Network accessline 278
    - **[Test different screen sizes](https://developer.android.com/training/testing/different-screens):** With some many devices available to users, you should test for different screen sizes.
  • Network accessline 278
    - **[Test different screen sizes](https://developer.android.com/training/testing/different-screens):** With some many devices available to users, you should test for different screen sizes.
  • Network accessline 279
    - **[Espresso](https://developer.android.com/training/testing/espresso)**: While intended for View-based UIs, Espresso knowledge can still be helpful for some aspects of Compose testing.
  • Network accessline 279
    - **[Espresso](https://developer.android.com/training/testing/espresso)**: While intended for View-based UIs, Espresso knowledge can still be helpful for some aspects of Compose testing.

testing/testing-setup/references/android/studio/preview/compose-screenshot-testing-with-testsuites.md

  • Network accessline 1
    > [!WARNING] > **Experimental:** Compose Preview Screenshot Testing with AGP test suites is in active development. APIs and DSL syntax are subject to change. Report feedback and issues through the [issue tracker](https://issuetracker.google
  • Network accessline 1
    > [!WARNING] > **Experimental:** Compose Preview Screenshot Testing with AGP test suites is in active development. APIs and DSL syntax are subject to change. Report feedback and issues through the [issue tracker](https://issuetracker.google
  • Network accessline 2
    > **Experimental:** Compose Preview Screenshot Testing with AGP test suites is in active development. APIs and DSL syntax are subject to change. Report feedback and issues through the [issue tracker](https://issuetracker.google.com/issues/n
  • Network accessline 2
    > **Experimental:** Compose Preview Screenshot Testing with AGP test suites is in active development. APIs and DSL syntax are subject to change. Report feedback and issues through the [issue tracker](https://issuetracker.google.com/issues/n
  • Network accessline 4
    Starting with Android Gradle Plugin (AGP) 9.5.0-alpha03 and Compose Preview Screenshot Testing engine `0.0.1-alpha16`, screenshot testing is integrated with AGP's native [test suites](https://developer.android.com/reference/tools/gradle-api
  • Network accessline 4
    Starting with Android Gradle Plugin (AGP) 9.5.0-alpha03 and Compose Preview Screenshot Testing engine `0.0.1-alpha16`, screenshot testing is integrated with AGP's native [test suites](https://developer.android.com/reference/tools/gradle-api
  • Network accessline 6
    AGP's native [test suites](https://developer.android.com/reference/tools/gradle-api/9.5/com/android/build/api/dsl/AgpTestSuite) framework.
  • Network accessline 6
    AGP's native [test suites](https://developer.android.com/reference/tools/gradle-api/9.5/com/android/build/api/dsl/AgpTestSuite) framework.
  • Network accessline 19
    [View on GitHub](https://github.com/android/skills/blob/main/testing/testing-setup)
  • Network accessline 19
    [View on GitHub](https://github.com/android/skills/blob/main/testing/testing-setup)
  • Network accessline 23
    Use the `testing-setup` [Android skill](https://developer.android.com/tools/agents/android-skills) to develop a testing strategy and create screenshot tests. To install the skill from the [Android CLI](https://developer.android.com/tools/ag
  • Network accessline 23
    Use the `testing-setup` [Android skill](https://developer.android.com/tools/agents/android-skills) to develop a testing strategy and create screenshot tests. To install the skill from the [Android CLI](https://developer.android.com/tools/ag
  • Network accessline 36
    - Compose Screenshot Engine version 0.0.1-alpha16 or higher. - JDK version 17 or higher. - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/c
  • Network accessline 36
    - Compose Screenshot Engine version 0.0.1-alpha16 or higher. - JDK version 17 or higher. - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/c
  • Network accessline 38
    - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
  • Network accessline 38
    - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).

testing/testing-setup/references/android/studio/preview/compose-screenshot-testing.md

  • Network accessline 1
    > [!CAUTION] > **Caution:** The standalone `com.android.compose.screenshot` plugin described on this page is no longer maintained. We recommend setting up screenshot tests with [AGP test suites](https://developer.android.com/studio/preview/
  • Network accessline 1
    > [!CAUTION] > **Caution:** The standalone `com.android.compose.screenshot` plugin described on this page is no longer maintained. We recommend setting up screenshot tests with [AGP test suites](https://developer.android.com/studio/preview/
  • Network accessline 2
    > **Caution:** The standalone `com.android.compose.screenshot` plugin described on this page is no longer maintained. We recommend setting up screenshot tests with [AGP test suites](https://developer.android.com/studio/preview/compose-scree
  • Network accessline 2
    > **Caution:** The standalone `com.android.compose.screenshot` plugin described on this page is no longer maintained. We recommend setting up screenshot tests with [AGP test suites](https://developer.android.com/studio/preview/compose-scree
  • Network accessline 4
    Screenshot testing is an effective way to verify how your UI looks to users. The Compose Preview Screenshot Testing tool combines the simplicity and features of [composable previews](https://developer.android.com/develop/ui/compose/tooling/
  • Network accessline 4
    Screenshot testing is an effective way to verify how your UI looks to users. The Compose Preview Screenshot Testing tool combines the simplicity and features of [composable previews](https://developer.android.com/develop/ui/compose/tooling/
  • Network accessline 5
    The Compose Preview Screenshot Testing tool combines the simplicity and features of [composable previews](https://developer.android.com/develop/ui/compose/tooling/previews) with the productivity gains of running host-side screenshot tests. 
  • Network accessline 5
    The Compose Preview Screenshot Testing tool combines the simplicity and features of [composable previews](https://developer.android.com/develop/ui/compose/tooling/previews) with the productivity gains of running host-side screenshot tests. 
  • Network accessline 6
    features of [composable previews](https://developer.android.com/develop/ui/compose/tooling/previews) with the productivity
  • Network accessline 6
    features of [composable previews](https://developer.android.com/develop/ui/compose/tooling/previews) with the productivity
  • Network accessline 13
    [View on GitHub](https://github.com/android/skills/blob/main/testing/testing-setup)
  • Network accessline 13
    [View on GitHub](https://github.com/android/skills/blob/main/testing/testing-setup)
  • Network accessline 17
    Use the `testing-setup` [Android skill](https://developer.android.com/tools/agents/android-skills) to develop a testing strategy and create screenshot tests. To install the skill from the [Android CLI](https://developer.android.com/tools/ag
  • Network accessline 17
    Use the `testing-setup` [Android skill](https://developer.android.com/tools/agents/android-skills) to develop a testing strategy and create screenshot tests. To install the skill from the [Android CLI](https://developer.android.com/tools/ag
  • Network accessline 36
    ![](https://developer.android.com/static/studio/images/compose-screenshot-testing.png) **Figure 1.** Example HTML report.
  • Network accessline 36
    ![](https://developer.android.com/static/studio/images/compose-screenshot-testing.png) **Figure 1.** Example HTML report.
  • Network accessline 63
    > [!NOTE] > **Note:** For requirements and setup instructions for AGP test suites, see [AGP test suites](https://developer.android.com/studio/preview/compose-screenshot-testing-with-testsuites).
  • Network accessline 63
    > [!NOTE] > **Note:** For requirements and setup instructions for AGP test suites, see [AGP test suites](https://developer.android.com/studio/preview/compose-screenshot-testing-with-testsuites).
  • Network accessline 64
    > **Note:** For requirements and setup instructions for AGP test suites, see [AGP test suites](https://developer.android.com/studio/preview/compose-screenshot-testing-with-testsuites).
  • Network accessline 64
    > **Note:** For requirements and setup instructions for AGP test suites, see [AGP test suites](https://developer.android.com/studio/preview/compose-screenshot-testing-with-testsuites).
  • Network accessline 69
    - Android Studio Panda 1 Canary 4 or higher. - Android Gradle Plugin (AGP) version 9.0 or higher. - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-re
  • Network accessline 69
    - Android Studio Panda 1 Canary 4 or higher. - Android Gradle Plugin (AGP) version 9.0 or higher. - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-re
  • Network accessline 70
    - Android Gradle Plugin (AGP) version 9.0 or higher. - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha16) or higher. - Kotlin vers
  • Network accessline 70
    - Android Gradle Plugin (AGP) version 9.0 or higher. - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha16) or higher. - Kotlin vers
  • Network accessline 71
    - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha16) or higher.
  • Network accessline 71
    - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha16) or higher.
  • Network accessline 72
    - Kotlin version 2.2.10 or higher. - JDK version 17 or higher. - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
  • Network accessline 72
    - Kotlin version 2.2.10 or higher. - JDK version 17 or higher. - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
  • Network accessline 74
    - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
  • Network accessline 74
    - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
  • Network accessline 79
    - Android Gradle Plugin (AGP) version 8.5.0 or higher. - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha16) or higher.
  • Network accessline 79
    - Android Gradle Plugin (AGP) version 8.5.0 or higher. - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha16) or higher.
  • Network accessline 80
    - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha16) or higher.
  • Network accessline 80
    - Compose Preview Screenshot Testing plugin version [0.0.1-alpha16](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha16) or higher.
  • Network accessline 81
    - Kotlin version 1.9.20 or higher. We recommend using Kotlin 2.0 or higher so you can use the Compose Compiler Gradle plugin. - JDK version 17 or higher. - Compose enabled for your project. We recommend enabling Compose using the [Compose C
  • Network accessline 81
    - Kotlin version 1.9.20 or higher. We recommend using Kotlin 2.0 or higher so you can use the Compose Compiler Gradle plugin. - JDK version 17 or higher. - Compose enabled for your project. We recommend enabling Compose using the [Compose C
  • Network accessline 83
    - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
  • Network accessline 83
    - Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
  • Network accessline 85
    > [!NOTE] > **Note:** If you can't use the Compose Compiler Gradle plugin, you can enable Compose by [declaring a dependency on the Compose Compiler directly](https://developer.android.com/jetpack/androidx/releases/compose-kotlin#kts). Make
  • Network accessline 85
    > [!NOTE] > **Note:** If you can't use the Compose Compiler Gradle plugin, you can enable Compose by [declaring a dependency on the Compose Compiler directly](https://developer.android.com/jetpack/androidx/releases/compose-kotlin#kts). Make
  • Network accessline 86
    > **Note:** If you can't use the Compose Compiler Gradle plugin, you can enable Compose by [declaring a dependency on the Compose Compiler directly](https://developer.android.com/jetpack/androidx/releases/compose-kotlin#kts). Make sure you 
  • Network accessline 86
    > **Note:** If you can't use the Compose Compiler Gradle plugin, you can enable Compose by [declaring a dependency on the Compose Compiler directly](https://developer.android.com/jetpack/androidx/releases/compose-kotlin#kts). Make sure you 
  • Network accessline 124
    4. Add the [`screenshot-validation-api`](https://maven.google.com/web/index.html?q=screenshot-validation-api#com.android.tools.screenshot:screenshot-validation-api)
  • Network accessline 124
    4. Add the [`screenshot-validation-api`](https://maven.google.com/web/index.html?q=screenshot-validation-api#com.android.tools.screenshot:screenshot-validation-api)
  • Network accessline 125
    and [`ui-tooling`](https://maven.google.com/web/index.html?q=tooling#androidx.compose.ui:ui-tooling)
  • Network accessline 125
    and [`ui-tooling`](https://maven.google.com/web/index.html?q=tooling#androidx.compose.ui:ui-tooling)
  • Network accessline 180
    [Download the Android CLI](https://developer.android.com/tools/agents)
  • Network accessline 180
    [Download the Android CLI](https://developer.android.com/tools/agents)
  • Network accessline 184
    Try [Android CLI](https://developer.android.com/tools/agents) if you're not using Android Studio or prefer to do things from the command line.
  • Network accessline 184
    Try [Android CLI](https://developer.android.com/tools/agents) if you're not using Android Studio or prefer to do things from the command line.
  • Network accessline 186
    For example, use the [`android studio render-compose-preview`](https://developer.android.com/tools/agents/android-cli/commands/studio_render-compose-preview) command when you need to render a Compose preview for visual testing.
  • Network accessline 186
    For example, use the [`android studio render-compose-preview`](https://developer.android.com/tools/agents/android-cli/commands/studio_render-compose-preview) command when you need to render a Compose preview for visual testing.
  • Network accessline 225
    > [!NOTE] > **Note:** Renaming a function annotated with `@PreviewTest` breaks the association with existing reference images. In that case, you must [regenerate reference images](https://developer.android.com/studio/preview/compose-screens
  • Network accessline 225
    > [!NOTE] > **Note:** Renaming a function annotated with `@PreviewTest` breaks the association with existing reference images. In that case, you must [regenerate reference images](https://developer.android.com/studio/preview/compose-screens
  • Network accessline 226
    > **Note:** Renaming a function annotated with `@PreviewTest` breaks the association with existing reference images. In that case, you must [regenerate reference images](https://developer.android.com/studio/preview/compose-screenshot-testin
  • Network accessline 226
    > **Note:** Renaming a function annotated with `@PreviewTest` breaks the association with existing reference images. In that case, you must [regenerate reference images](https://developer.android.com/studio/preview/compose-screenshot-testin
  • Network accessline 251
    You can find the complete list of current known issues in the tool's [issue tracker component](https://issuetracker.google.com/issues?q=status:open+componentid:1581441&s=created_time:desc). Report any other feedback and issues
  • Network accessline 251
    You can find the complete list of current known issues in the tool's [issue tracker component](https://issuetracker.google.com/issues?q=status:open+componentid:1581441&s=created_time:desc). Report any other feedback and issues
  • Network accessline 252
    [issue tracker component](https://issuetracker.google.com/issues?q=status:open+componentid:1581441&s=created_time:desc). Report any other feedback and issues
  • Network accessline 252
    [issue tracker component](https://issuetracker.google.com/issues?q=status:open+componentid:1581441&s=created_time:desc). Report any other feedback and issues
  • Network accessline 253
    through the [issue tracker](https://issuetracker.google.com/issues/new?component=192708&template=840533).
  • Network accessline 253
    through the [issue tracker](https://issuetracker.google.com/issues/new?component=192708&template=840533).
  • Network accessline 257
    For a full list of release updates, see the [release notes](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes).
  • Network accessline 257
    For a full list of release updates, see the [release notes](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes).
  • Network accessline 258
    [release notes](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes).
  • Network accessline 258
    [release notes](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes).

testing/testing-setup/references/android/training/dependency-injection/hilt-testing.md

  • Network accessline 30
    your composables. In unit tests, construct the ViewModel directly with fakes. For information on how state flows from a ViewModel into composables, see [State and Jetpack Compose](https://developer.android.com/develop/ui/compose/state) and 
  • Network accessline 30
    your composables. In unit tests, construct the ViewModel directly with fakes. For information on how state flows from a ViewModel into composables, see [State and Jetpack Compose](https://developer.android.com/develop/ui/compose/state) and 
  • Network accessline 32
    [State and Jetpack Compose](https://developer.android.com/develop/ui/compose/state) and [Where to hoist state](https://developer.android.com/develop/ui/compose/state-hoisting).
  • Network accessline 32
    [State and Jetpack Compose](https://developer.android.com/develop/ui/compose/state) and [Where to hoist state](https://developer.android.com/develop/ui/compose/state-hoisting).
  • Network accessline 62
    > [!NOTE] > **Note:** If you use [Jetpack integrations](https://developer.android.com/training/dependency-injection/hilt-jetpack) (like `hilt-navigation-compose` to obtain a ViewModel through `hiltViewModel()`), you must also add their anno
  • Network accessline 62
    > [!NOTE] > **Note:** If you use [Jetpack integrations](https://developer.android.com/training/dependency-injection/hilt-jetpack) (like `hilt-navigation-compose` to obtain a ViewModel through `hiltViewModel()`), you must also add their anno
  • Network accessline 63
    > **Note:** If you use [Jetpack integrations](https://developer.android.com/training/dependency-injection/hilt-jetpack) (like `hilt-navigation-compose` to obtain a ViewModel through `hiltViewModel()`), you must also add their annotation pro
  • Network accessline 63
    > **Note:** If you use [Jetpack integrations](https://developer.android.com/training/dependency-injection/hilt-jetpack) (like `hilt-navigation-compose` to obtain a ViewModel through `hiltViewModel()`), you must also add their annotation pro
  • Network accessline 87
    > [!NOTE] > **Note:** If you have other rules in your test, see [Multiple TestRule objects in > your instrumented test](https://developer.android.com/training/dependency-injection/hilt-testing#multiple-testrules).
  • Network accessline 87
    > [!NOTE] > **Note:** If you have other rules in your test, see [Multiple TestRule objects in > your instrumented test](https://developer.android.com/training/dependency-injection/hilt-testing#multiple-testrules).
  • Network accessline 89
    > your instrumented test](https://developer.android.com/training/dependency-injection/hilt-testing#multiple-testrules).
  • Network accessline 89
    > your instrumented test](https://developer.android.com/training/dependency-injection/hilt-testing#multiple-testrules).
  • Network accessline 102
    that supports Hilt. The library provides `HiltTestApplication` for use in tests. If your tests need a different base application, see [Custom application for tests](https://developer.android.com/training/dependency-injection/hilt-testing#cu
  • Network accessline 102
    that supports Hilt. The library provides `HiltTestApplication` for use in tests. If your tests need a different base application, see [Custom application for tests](https://developer.android.com/training/dependency-injection/hilt-testing#cu
  • Network accessline 104
    tests](https://developer.android.com/training/dependency-injection/hilt-testing#custom-application).
  • Network accessline 104
    tests](https://developer.android.com/training/dependency-injection/hilt-testing#custom-application).
  • Network accessline 106
    You must set your test application to run in your [instrumented tests](https://developer.android.com/training/testing/ui-testing) or [Robolectric
  • Network accessline 106
    You must set your test application to run in your [instrumented tests](https://developer.android.com/training/testing/ui-testing) or [Robolectric
  • Network accessline 107
    tests](https://developer.android.com/training/testing/ui-testing) or [Robolectric
  • Network accessline 107
    tests](https://developer.android.com/training/testing/ui-testing) or [Robolectric
  • Network accessline 108
    tests](http://robolectric.org/). The following instructions aren't
  • Network accessline 108
    tests](http://robolectric.org/). The following instructions aren't
  • Network accessline 114
    To use the Hilt test application in [instrumented tests](https://developer.android.com/training/testing/ui-testing), you need to configure a new test runner.
  • Network accessline 114
    To use the Hilt test application in [instrumented tests](https://developer.android.com/training/testing/ui-testing), you need to configure a new test runner.
  • Network accessline 115
    tests](https://developer.android.com/training/testing/ui-testing), you need to configure a new test runner.
  • Network accessline 115
    tests](https://developer.android.com/training/testing/ui-testing), you need to configure a new test runner.
  • Network accessline 119
    1. Create a custom class that extends [`AndroidJUnitRunner`](https://developer.android.com/reference/kotlin/androidx/test/runner/AndroidJUnitRunner) in the `androidTest` folder.
  • Network accessline 119
    1. Create a custom class that extends [`AndroidJUnitRunner`](https://developer.android.com/reference/kotlin/androidx/test/runner/AndroidJUnitRunner) in the `androidTest` folder.
  • Network accessline 132
    Next, configure this test runner in your Gradle file as described in the [instrumented unit test guide](https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests#setup). Make sure
  • Network accessline 132
    Next, configure this test runner in your Gradle file as described in the [instrumented unit test guide](https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests#setup). Make sure
  • Network accessline 133
    [instrumented unit test guide](https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests#setup). Make sure you use the full classpath:
  • Network accessline 133
    [instrumented unit test guide](https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests#setup). Make sure you use the full classpath:
  • Network accessline 134
    guide](https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests#setup). Make sure
  • Network accessline 134
    guide](https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests#setup). Make sure
  • Network accessline 336
    `@BindValue` works with qualifiers and other testing annotations. For example, if you use testing libraries such as [Mockito](https://site.mockito.org/), you could use it in a
  • Network accessline 336
    `@BindValue` works with qualifiers and other testing annotations. For example, if you use testing libraries such as [Mockito](https://site.mockito.org/), you could use it in a
  • Network accessline 337
    if you use testing libraries such as [Mockito](https://site.mockito.org/), you could use it in a Robolectric test as follows:
  • Network accessline 337
    if you use testing libraries such as [Mockito](https://site.mockito.org/), you could use it in a Robolectric test as follows:
  • Network accessline 338
    [Mockito](https://site.mockito.org/), you could use it in a
  • Network accessline 338
    [Mockito](https://site.mockito.org/), you could use it in a
  • Network accessline 353
    If you need to add a [multibinding](https://dagger.dev/dev-guide/multibindings),
  • Network accessline 353
    If you need to add a [multibinding](https://dagger.dev/dev-guide/multibindings),
  • Network accessline 379
    general, the name of the generated application is the name of the annotated class appended with `_Application`. You must set the generated Hilt test application to run in your [instrumented tests](https://developer.android.com/training/test
  • Network accessline 379
    general, the name of the generated application is the name of the annotated class appended with `_Application`. You must set the generated Hilt test application to run in your [instrumented tests](https://developer.android.com/training/test
  • Network accessline 380
    class appended with `_Application`. You must set the generated Hilt test application to run in your [instrumented tests](https://developer.android.com/training/testing/ui-testing) or [Robolectric tests](http://robolectric.org/) as described
  • Network accessline 380
    class appended with `_Application`. You must set the generated Hilt test application to run in your [instrumented tests](https://developer.android.com/training/testing/ui-testing) or [Robolectric tests](http://robolectric.org/) as described
  • Network accessline 381
    application to run in your [instrumented tests](https://developer.android.com/training/testing/ui-testing) or
  • Network accessline 381
    application to run in your [instrumented tests](https://developer.android.com/training/testing/ui-testing) or
  • Network accessline 382
    [Robolectric tests](http://robolectric.org/) as described in [Test
  • Network accessline 382
    [Robolectric tests](http://robolectric.org/) as described in [Test
  • Network accessline 383
    application](https://developer.android.com/training/dependency-injection/hilt-testing#test-application).
  • Network accessline 383
    application](https://developer.android.com/training/dependency-injection/hilt-testing#test-application).
  • Network accessline 433
    More information about `@EarlyEntryPoint` in the [Hilt documentation](https://dagger.dev/hilt/early-entry-point).
  • Network accessline 433
    More information about `@EarlyEntryPoint` in the [Hilt documentation](https://dagger.dev/hilt/early-entry-point).
  • Network accessline 434
    [Hilt documentation](https://dagger.dev/hilt/early-entry-point).
  • Network accessline 434
    [Hilt documentation](https://dagger.dev/hilt/early-entry-point).
  • Network accessline 442
    - [Test your Compose layout](https://developer.android.com/develop/ui/compose/testing)
  • Network accessline 442
    - [Test your Compose layout](https://developer.android.com/develop/ui/compose/testing)
  • Network accessline 443
    - [Testing cheatsheet](https://developer.android.com/develop/ui/compose/testing/testing-cheatsheet)
  • Network accessline 443
    - [Testing cheatsheet](https://developer.android.com/develop/ui/compose/testing/testing-cheatsheet)
  • Network accessline 447
    - [Hilt testing guide (Views)](https://developer.android.com/topic/architecture/views/dependency-injection/hilt-testing-views)
  • Network accessline 447
    - [Hilt testing guide (Views)](https://developer.android.com/topic/architecture/views/dependency-injection/hilt-testing-views)

tv/leanback-to-compose-tv-migration/references/android/training/tv/get-started/navigation.md

  • Network accessline 35
    complex game controllers. All controllers include a directional pad (D-pad) plus select, home, and back buttons. Other buttons vary by model. ![A television remote control](https://developer.android.com/static/training/tv/images/tv-nav-cont
  • Network accessline 35
    complex game controllers. All controllers include a directional pad (D-pad) plus select, home, and back buttons. Other buttons vary by model. ![A television remote control](https://developer.android.com/static/training/tv/images/tv-nav-cont
  • Network accessline 37
    ![A television remote control](https://developer.android.com/static/training/tv/images/tv-nav-controller.png) **Figure 1.** Example of a TV remote.
  • Network accessline 37
    ![A television remote control](https://developer.android.com/static/training/tv/images/tv-nav-controller.png) **Figure 1.** Example of a TV remote.
  • Network accessline 64
    > [!NOTE] > **Note:** The remote control shown in figure 1 is for reference only. There are many layouts and styles of remotes and controllers, though all of them have the basic functionality described here. For more information, see [Manag
  • Network accessline 64
    > [!NOTE] > **Note:** The remote control shown in figure 1 is for reference only. There are many layouts and styles of remotes and controllers, though all of them have the basic functionality described here. For more information, see [Manag
  • Network accessline 65
    > **Note:** The remote control shown in figure 1 is for reference only. There are many layouts and styles of remotes and controllers, though all of them have the basic functionality described here. For more information, see [Manage TV contr
  • Network accessline 65
    > **Note:** The remote control shown in figure 1 is for reference only. There are many layouts and styles of remotes and controllers, though all of them have the basic functionality described here. For more information, see [Manage TV contr
  • Network accessline 105
    | Attribute | Function | |---|---| | [`nextFocusDown`](https://developer.android.com/reference/android/R.attr#nextFocusDown) | Defines the next view to receive focus when the user navigates down. |
  • Network accessline 105
    | Attribute | Function | |---|---| | [`nextFocusDown`](https://developer.android.com/reference/android/R.attr#nextFocusDown) | Defines the next view to receive focus when the user navigates down. |
  • Network accessline 106
    |---|---| | [`nextFocusDown`](https://developer.android.com/reference/android/R.attr#nextFocusDown) | Defines the next view to receive focus when the user navigates down. | | [`nextFocusLeft`](https://developer.android.com/reference/android
  • Network accessline 106
    |---|---| | [`nextFocusDown`](https://developer.android.com/reference/android/R.attr#nextFocusDown) | Defines the next view to receive focus when the user navigates down. | | [`nextFocusLeft`](https://developer.android.com/reference/android
  • Network accessline 107
    | [`nextFocusDown`](https://developer.android.com/reference/android/R.attr#nextFocusDown) | Defines the next view to receive focus when the user navigates down. |
  • Network accessline 107
    | [`nextFocusDown`](https://developer.android.com/reference/android/R.attr#nextFocusDown) | Defines the next view to receive focus when the user navigates down. |
  • Network accessline 108
    | [`nextFocusLeft`](https://developer.android.com/reference/android/R.attr#nextFocusLeft) | Defines the next view to receive focus when the user navigates left. |
  • Network accessline 108
    | [`nextFocusLeft`](https://developer.android.com/reference/android/R.attr#nextFocusLeft) | Defines the next view to receive focus when the user navigates left. |
  • Network accessline 109
    | [`nextFocusRight`](https://developer.android.com/reference/android/R.attr#nextFocusRight) | Defines the next view to receive focus when the user navigates right. |
  • Network accessline 109
    | [`nextFocusRight`](https://developer.android.com/reference/android/R.attr#nextFocusRight) | Defines the next view to receive focus when the user navigates right. |
  • Network accessline 110
    | [`nextFocusUp`](https://developer.android.com/reference/android/R.attr#nextFocusUp) | Defines the next view to receive focus when the user navigates up. |
  • Network accessline 110
    | [`nextFocusUp`](https://developer.android.com/reference/android/R.attr#nextFocusUp) | Defines the next view to receive focus when the user navigates up. |
  • Network accessline 132
    Android provides [Drawable state list resources](https://developer.android.com/guide/topics/resources/drawable-resource#StateList)
  • Network accessline 132
    Android provides [Drawable state list resources](https://developer.android.com/guide/topics/resources/drawable-resource#StateList)
  • Network accessline 139
    <!-- res/drawable/button.xml --> <selector xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 139
    <!-- res/drawable/button.xml --> <selector xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 140
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 140
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
  • Network accessline 171
    To create a straightforward and predictable navigation experience, when the user presses the remote's back button, take them to the previous destination. ![The flow of navigation when using top navigation](https://developer.android.com/stat
  • Network accessline 171
    To create a straightforward and predictable navigation experience, when the user presses the remote's back button, take them to the previous destination. ![The flow of navigation when using top navigation](https://developer.android.com/stat
  • Network accessline 173
    ![The flow of navigation when using top navigation](https://developer.android.com/static/training/tv/images/tv-nav-top.png) **Figure 2.** Flow using top navigation. ![The flow of navigation when using side navigation](https://developer.andr
  • Network accessline 173
    ![The flow of navigation when using top navigation](https://developer.android.com/static/training/tv/images/tv-nav-top.png) **Figure 2.** Flow using top navigation. ![The flow of navigation when using side navigation](https://developer.andr
  • Network accessline 182
    Ensure that the back button isn't gated by confirmation screens or part of an infinite loop. ![A dialog asking users if they want to exit](https://developer.android.com/static/training/tv/images/tv-nav-back-button-dialog.png) **Figure 4.** 
  • Network accessline 182
    Ensure that the back button isn't gated by confirmation screens or part of an infinite loop. ![A dialog asking users if they want to exit](https://developer.android.com/static/training/tv/images/tv-nav-back-button-dialog.png) **Figure 4.** 
  • Network accessline 183
    infinite loop. ![A dialog asking users if they want to exit](https://developer.android.com/static/training/tv/images/tv-nav-back-button-dialog.png) **Figure 4.** Exit gating Don't.
  • Network accessline 183
    infinite loop. ![A dialog asking users if they want to exit](https://developer.android.com/static/training/tv/images/tv-nav-back-button-dialog.png) **Figure 4.** Exit gating Don't.
  • Network accessline 184
    ![A dialog asking users if they want to exit](https://developer.android.com/static/training/tv/images/tv-nav-back-button-dialog.png) **Figure 4.** Exit gating
  • Network accessline 184
    ![A dialog asking users if they want to exit](https://developer.android.com/static/training/tv/images/tv-nav-back-button-dialog.png) **Figure 4.** Exit gating
  • Network accessline 192
    ![Navigation looping between closing and opening the menu](https://developer.android.com/static/training/tv/images/tv-nav-loop.gif) **Figure 5.** Navigation loop
  • Network accessline 192
    ![Navigation looping between closing and opening the menu](https://developer.android.com/static/training/tv/images/tv-nav-loop.gif) **Figure 5.** Navigation loop
  • Network accessline 203
    backward on a TV. It's not necessary to show a virtual back button on the screen: ![A virtual back button displayed on the screen](https://developer.android.com/static/training/tv/images/tv-nav-no-soft-back.png) **Figure 6.** Soft back butt
  • Network accessline 203
    backward on a TV. It's not necessary to show a virtual back button on the screen: ![A virtual back button displayed on the screen](https://developer.android.com/static/training/tv/images/tv-nav-no-soft-back.png) **Figure 6.** Soft back butt
  • Network accessline 205
    ![A virtual back button displayed on the screen](https://developer.android.com/static/training/tv/images/tv-nav-no-soft-back.png) **Figure 6.** Soft back button
  • Network accessline 205
    ![A virtual back button displayed on the screen](https://developer.android.com/static/training/tv/images/tv-nav-no-soft-back.png) **Figure 6.** Soft back button
  • Network accessline 216
    it's good practice to have a **Cancel** button that returns to the previous destination: ![A cancel button displayed alongside destructive actions](https://developer.android.com/static/training/tv/images/tv-nav-cancel.png) **Figure 7.** Sof
  • Network accessline 216
    it's good practice to have a **Cancel** button that returns to the previous destination: ![A cancel button displayed alongside destructive actions](https://developer.android.com/static/training/tv/images/tv-nav-cancel.png) **Figure 7.** Sof
  • Network accessline 218
    ![A cancel button displayed alongside destructive actions](https://developer.android.com/static/training/tv/images/tv-nav-cancel.png) **Figure 7.** Soft cancel button.
  • Network accessline 218
    ![A cancel button displayed alongside destructive actions](https://developer.android.com/static/training/tv/images/tv-nav-cancel.png) **Figure 7.** Soft cancel button.
  • Network accessline 226
    The Android framework generally handles back navigation well, as it does for the D-pad. If you use the [Navigation component](https://developer.android.com/guide/navigation), you can support a variety of navigation graphs.
  • Network accessline 226
    The Android framework generally handles back navigation well, as it does for the D-pad. If you use the [Navigation component](https://developer.android.com/guide/navigation), you can support a variety of navigation graphs.
  • Network accessline 227
    navigation well, as it does for the D-pad. If you use the [Navigation component](https://developer.android.com/guide/navigation), you can support a variety of navigation graphs. Occasionally, you might need to implement some custom behavior
  • Network accessline 227
    navigation well, as it does for the D-pad. If you use the [Navigation component](https://developer.android.com/guide/navigation), you can support a variety of navigation graphs. Occasionally, you might need to implement some custom behavior
  • Network accessline 228
    [Navigation component](https://developer.android.com/guide/navigation), you can support a variety of navigation graphs.
  • Network accessline 228
    [Navigation component](https://developer.android.com/guide/navigation), you can support a variety of navigation graphs.
  • Network accessline 232
    [`ComponentActivity`](https://developer.android.com/reference/androidx/activity/ComponentActivity),
  • Network accessline 232
    [`ComponentActivity`](https://developer.android.com/reference/androidx/activity/ComponentActivity),
  • Network accessline 233
    the base class for [`FragmentActivity`](https://developer.android.com/reference/androidx/fragment/app/FragmentActivity)
  • Network accessline 233
    the base class for [`FragmentActivity`](https://developer.android.com/reference/androidx/fragment/app/FragmentActivity)
  • Network accessline 234
    and [`AppCompatActivity`](https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity),
  • Network accessline 234
    and [`AppCompatActivity`](https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity),
  • Network accessline 235
    lets you control the behavior of the back button by using its [`OnBackPressedDispatcher`](https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher), which you can retrieve by calling `getOnBackPressedDispatcher()`.
  • Network accessline 235
    lets you control the behavior of the back button by using its [`OnBackPressedDispatcher`](https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher), which you can retrieve by calling `getOnBackPressedDispatcher()`.
  • Network accessline 236
    [`OnBackPressedDispatcher`](https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher),
  • Network accessline 236
    [`OnBackPressedDispatcher`](https://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher),
  • Network accessline 239
    For more information, see [Provide custom back navigation](https://developer.android.com/guide/navigation/navigation-custom-back).
  • Network accessline 239
    For more information, see [Provide custom back navigation](https://developer.android.com/guide/navigation/navigation-custom-back).
  • Network accessline 240
    information, see [Provide custom back navigation](https://developer.android.com/guide/navigation/navigation-custom-back).
  • Network accessline 240
    information, see [Provide custom back navigation](https://developer.android.com/guide/navigation/navigation-custom-back).
  • Network accessline 244
    Video playback is one of the most important features on TV. It's important that video players in apps across Android TV behave the same. Refer to the [playback controls guidelines for TV](https://developer.android.com/training/tv/playback/c
  • Network accessline 244
    Video playback is one of the most important features on TV. It's important that video players in apps across Android TV behave the same. Refer to the [playback controls guidelines for TV](https://developer.android.com/training/tv/playback/c
  • Network accessline 246
    controls guidelines for TV](https://developer.android.com/training/tv/playback/controls).
  • Network accessline 246
    controls guidelines for TV](https://developer.android.com/training/tv/playback/controls).
  • Network accessline 250
    In addition to complying with the [TV app quality requirements](https://developer.android.com/docs/quality-guidelines/tv-app-quality), apps
  • Network accessline 250
    In addition to complying with the [TV app quality requirements](https://developer.android.com/docs/quality-guidelines/tv-app-quality), apps
  • Network accessline 251
    [TV app quality requirements](https://developer.android.com/docs/quality-guidelines/tv-app-quality), apps
  • Network accessline 251
    [TV app quality requirements](https://developer.android.com/docs/quality-guidelines/tv-app-quality), apps
  • Network accessline 285
    first button press after the deep link, then the direct-back requirement doesn't apply, and only the standard [back button behavior](https://developer.android.com/training/tv/get-started/controllers#back-button) is required.
  • Network accessline 285
    first button press after the deep link, then the direct-back requirement doesn't apply, and only the standard [back button behavior](https://developer.android.com/training/tv/get-started/controllers#back-button) is required.
  • Network accessline 287
    behavior](https://developer.android.com/training/tv/get-started/controllers#back-button) is required.
  • Network accessline 287
    behavior](https://developer.android.com/training/tv/get-started/controllers#back-button) is required.
  • Network accessline 297
    and then back to Google TV or Android TV, without any infinite loops. For more information, see the [Predictable back button behavior](https://developer.android.com/training/tv/get-started/navigation#predictable_back_button_behavior)
  • Network accessline 297
    and then back to Google TV or Android TV, without any infinite loops. For more information, see the [Predictable back button behavior](https://developer.android.com/training/tv/get-started/navigation#predictable_back_button_behavior)
  • Network accessline 298
    information, see the [Predictable back button behavior](https://developer.android.com/training/tv/get-started/navigation#predictable_back_button_behavior) section.
  • Network accessline 298
    information, see the [Predictable back button behavior](https://developer.android.com/training/tv/get-started/navigation#predictable_back_button_behavior) section.
  • Network accessline 299
    behavior](https://developer.android.com/training/tv/get-started/navigation#predictable_back_button_behavior)
  • Network accessline 299
    behavior](https://developer.android.com/training/tv/get-started/navigation#predictable_back_button_behavior)
  • Network accessline 322
    ![Screenshots showing a deep link into a details page within an app. Pressing back goes to that app's home screen and pressing back again returns to the original screen.](https://developer.android.com/static/training/tv/images/tv-nav-deepli
  • Network accessline 322
    ![Screenshots showing a deep link into a details page within an app. Pressing back goes to that app's home screen and pressing back again returns to the original screen.](https://developer.android.com/static/training/tv/images/tv-nav-deepli
  • Network accessline 324
    returns to the original screen.](https://developer.android.com/static/training/tv/images/tv-nav-deeplink.png) **Figure 8.** Deep linking to a details page.
  • Network accessline 324
    returns to the original screen.](https://developer.android.com/static/training/tv/images/tv-nav-deeplink.png) **Figure 8.** Deep linking to a details page.
  • Network accessline 333
    > [!NOTE] > **Note:** This does not apply when launching from the Live Tab for direct playback. See the [Live Tab navigation](https://developer.android.com/training/tv/get-started/navigation#live-tab-navigation) section for details.
  • Network accessline 333
    > [!NOTE] > **Note:** This does not apply when launching from the Live Tab for direct playback. See the [Live Tab navigation](https://developer.android.com/training/tv/get-started/navigation#live-tab-navigation) section for details.
  • Network accessline 334
    > **Note:** This does not apply when launching from the Live Tab for direct playback. See the [Live Tab navigation](https://developer.android.com/training/tv/get-started/navigation#live-tab-navigation) section for details.
  • Network accessline 334
    > **Note:** This does not apply when launching from the Live Tab for direct playback. See the [Live Tab navigation](https://developer.android.com/training/tv/get-started/navigation#live-tab-navigation) section for details.
  • Network accessline 338
    Let users navigate your UI with clear direction. If there isn't a straight path to get to a control, consider relocating it. ![A layout with controls placed in non-overlapping locations](https://developer.android.com/static/training/tv/imag
  • Network accessline 338
    Let users navigate your UI with clear direction. If there isn't a straight path to get to a control, consider relocating it. ![A layout with controls placed in non-overlapping locations](https://developer.android.com/static/training/tv/imag
  • Network accessline 340
    ![A layout with controls placed in non-overlapping locations](https://developer.android.com/static/training/tv/images/tv-nav-focusable-2.png) **Figure 9.** Control focusability.
  • Network accessline 340
    ![A layout with controls placed in non-overlapping locations](https://developer.android.com/static/training/tv/images/tv-nav-focusable-2.png) **Figure 9.** Control focusability.
  • Network accessline 345
    Place controls, like the search action shown here, in locations that don't overlap with other clickable elements. ![A layout with controls in hard-to-reach locations](https://developer.android.com/static/training/tv/images/tv-nav-focusable-
  • Network accessline 345
    Place controls, like the search action shown here, in locations that don't overlap with other clickable elements. ![A layout with controls in hard-to-reach locations](https://developer.android.com/static/training/tv/images/tv-nav-focusable-
  • Network accessline 347
    ![A layout with controls in hard-to-reach locations](https://developer.android.com/static/training/tv/images/tv-nav-focusable-1.png) **Figure 10.** Control focusability.
  • Network accessline 347
    ![A layout with controls in hard-to-reach locations](https://developer.android.com/static/training/tv/images/tv-nav-focusable-1.png) **Figure 10.** Control focusability.
  • Network accessline 358
    Give each direction a specific function, making it fast to navigate large hierarchies. ![A layout using vertical categories and horizontal items](https://developer.android.com/static/training/tv/images/tv-nav-axes-1.png) **Figure 11.** Trav
  • Network accessline 358
    Give each direction a specific function, making it fast to navigate large hierarchies. ![A layout using vertical categories and horizontal items](https://developer.android.com/static/training/tv/images/tv-nav-axes-1.png) **Figure 11.** Trav
  • Network accessline 360
    ![A layout using vertical categories and horizontal items](https://developer.android.com/static/training/tv/images/tv-nav-axes-1.png) **Figure 11.** Traversal.
  • Network accessline 360
    ![A layout using vertical categories and horizontal items](https://developer.android.com/static/training/tv/images/tv-nav-axes-1.png) **Figure 11.** Traversal.
  • Network accessline 365
    Categories can be traversed on the vertical axis, and items within each category can be browsed on the horizontal axis. ![A complex and nested layout hierarchy](https://developer.android.com/static/training/tv/images/tv-nav-axes-2.png) **Fi
  • Network accessline 365
    Categories can be traversed on the vertical axis, and items within each category can be browsed on the horizontal axis. ![A complex and nested layout hierarchy](https://developer.android.com/static/training/tv/images/tv-nav-axes-2.png) **Fi
  • Network accessline 367
    ![A complex and nested layout hierarchy](https://developer.android.com/static/training/tv/images/tv-nav-axes-2.png) **Figure 12.** Traversal.
  • Network accessline 367
    ![A complex and nested layout hierarchy](https://developer.android.com/static/training/tv/images/tv-nav-axes-2.png) **Figure 12.** Traversal.

tv/leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/browse.md

  • Network accessline 7
    has a list of media content. Examples of sections in a media catalog include: playlists, featured content, recommended categories. ![](https://developer.android.com/static/training/tv/images/compose-catalogbrowser-example.png) **Figure 1.**
  • Network accessline 7
    has a list of media content. Examples of sections in a media catalog include: playlists, featured content, recommended categories. ![](https://developer.android.com/static/training/tv/images/compose-catalogbrowser-example.png) **Figure 1.**
  • Network accessline 9
    ![](https://developer.android.com/static/training/tv/images/compose-catalogbrowser-example.png) **Figure 1.** Typical catalog screen. Users are able to browse video catalog data.
  • Network accessline 9
    ![](https://developer.android.com/static/training/tv/images/compose-catalogbrowser-example.png) **Figure 1.** Typical catalog screen. Users are able to browse video catalog data.
  • Network accessline 45
    Compose for TV offers lazy lists, a component to display a large number of items (or a list of an unknown length). Call [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyColum
  • Network accessline 45
    Compose for TV offers lazy lists, a component to display a large number of items (or a list of an unknown length). Call [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyColum
  • Network accessline 46
    number of items (or a list of an unknown length). Call [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.L
  • Network accessline 46
    number of items (or a list of an unknown length). Call [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.L
  • Network accessline 47
    [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.Padding
  • Network accessline 47
    [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foundation.layout.Padding
  • Network accessline 48
    to place sections vertically. `LazyColumn` provides a [`LazyListScope.() -> Unit`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyListScope) block, which offers a DSL to define item contents. In the foll
  • Network accessline 48
    to place sections vertically. `LazyColumn` provides a [`LazyListScope.() -> Unit`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyListScope) block, which offers a DSL to define item contents. In the foll
  • Network accessline 49
    [`LazyListScope.() -> Unit`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyListScope)
  • Network accessline 49
    [`LazyListScope.() -> Unit`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyListScope)
  • Network accessline 76
    In the example, `SectionRow` composable function defines how to display sections. In the following function, [`LazyRow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyRow(androidx.compos
  • Network accessline 76
    In the example, `SectionRow` composable function defines how to display sections. In the following function, [`LazyRow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyRow(androidx.compos
  • Network accessline 77
    sections. In the following function, [`LazyRow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyRow(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.co
  • Network accessline 77
    sections. In the following function, [`LazyRow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyRow(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.co
  • Network accessline 78
    In the following function, [`LazyRow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyRow(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foun
  • Network accessline 78
    In the following function, [`LazyRow`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyRow(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.foun
  • Network accessline 79
    horizontal version of [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.fou
  • Network accessline 79
    horizontal version of [`LazyColumn`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#LazyColumn(androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.LazyListState,androidx.compose.fou
  • Network accessline 130
    In the `SectionRow` composable, the [`Text`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#Text(androidx.compose.ui.text.AnnotatedString,androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,
  • Network accessline 130
    In the `SectionRow` composable, the [`Text`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#Text(androidx.compose.ui.text.AnnotatedString,androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,
  • Network accessline 132
    defined in Material Design are offered in the tv-material library . You can change the texts' style as defined in Material Design by referring to the [`MaterialTheme`](https://developer.android.com/reference/kotlin/androidx/tv/material3/Mat
  • Network accessline 132
    defined in Material Design are offered in the tv-material library . You can change the texts' style as defined in Material Design by referring to the [`MaterialTheme`](https://developer.android.com/reference/kotlin/androidx/tv/material3/Mat
  • Network accessline 133
    change the texts' style as defined in Material Design by referring to the [`MaterialTheme`](https://developer.android.com/reference/kotlin/androidx/tv/material3/MaterialTheme) object. This object is also provided by the tv-material library.
  • Network accessline 133
    change the texts' style as defined in Material Design by referring to the [`MaterialTheme`](https://developer.android.com/reference/kotlin/androidx/tv/material3/MaterialTheme) object. This object is also provided by the tv-material library.
  • Network accessline 134
    [`MaterialTheme`](https://developer.android.com/reference/kotlin/androidx/tv/material3/MaterialTheme) object.
  • Network accessline 134
    [`MaterialTheme`](https://developer.android.com/reference/kotlin/androidx/tv/material3/MaterialTheme) object.
  • Network accessline 135
    This object is also provided by the tv-material library. [`Card`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#Card(kotlin.Function0,androidx.compose.ui.Modifier,androidx.tv.material3.CardShape,androi
  • Network accessline 135
    This object is also provided by the tv-material library. [`Card`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#Card(kotlin.Function0,androidx.compose.ui.Modifier,androidx.tv.material3.CardShape,androi
  • Network accessline 136
    [`Card`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#Card(kotlin.Function0,androidx.compose.ui.Modifier,androidx.tv.material3.CardShape,androidx.tv.material3.CardColors,androidx.tv.material3.CardScal
  • Network accessline 136
    [`Card`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#Card(kotlin.Function0,androidx.compose.ui.Modifier,androidx.tv.material3.CardShape,androidx.tv.material3.CardColors,androidx.tv.material3.CardScal
  • Network accessline 163
    > [!NOTE] > **Note:** `AsyncImage` is a composable that loads an image from the internet. See [Loading Images](https://developer.android.com/develop/ui/compose/graphics/images/loading#internet-loading) for details.
  • Network accessline 163
    > [!NOTE] > **Note:** `AsyncImage` is a composable that loads an image from the internet. See [Loading Images](https://developer.android.com/develop/ui/compose/graphics/images/loading#internet-loading) for details.
  • Network accessline 164
    > **Note:** `AsyncImage` is a composable that loads an image from the internet. See [Loading Images](https://developer.android.com/develop/ui/compose/graphics/images/loading#internet-loading) for details.
  • Network accessline 164
    > **Note:** `AsyncImage` is a composable that loads an image from the internet. See [Loading Images](https://developer.android.com/develop/ui/compose/graphics/images/loading#internet-loading) for details.
  • Network accessline 168
    In the example described earlier, all movies are displayed equally. They have the same area, no visual difference between them. You can highlight some of them with [`Carousel`](https://developer.android.com/reference/kotlin/androidx/tv/mate
  • Network accessline 168
    In the example described earlier, all movies are displayed equally. They have the same area, no visual difference between them. You can highlight some of them with [`Carousel`](https://developer.android.com/reference/kotlin/androidx/tv/mate
  • Network accessline 170
    You can highlight some of them with [`Carousel`](https://developer.android.com/reference/kotlin/androidx/tv/material3/Carousel.composable#Carousel(kotlin.Int,androidx.compose.ui.Modifier,androidx.tv.material3.CarouselState,kotlin.Long,andro
  • Network accessline 170
    You can highlight some of them with [`Carousel`](https://developer.android.com/reference/kotlin/androidx/tv/material3/Carousel.composable#Carousel(kotlin.Int,androidx.compose.ui.Modifier,androidx.tv.material3.CarouselState,kotlin.Long,andro
  • Network accessline 176
    [`Carousel`](https://developer.android.com/reference/kotlin/androidx/tv/material3/Carousel.composable#Carousel(kotlin.Int,androidx.compose.ui.Modifier,androidx.tv.material3.CarouselState,kotlin.Long,androidx.compose.animation.ContentTransfo
  • Network accessline 176
    [`Carousel`](https://developer.android.com/reference/kotlin/androidx/tv/material3/Carousel.composable#Carousel(kotlin.Int,androidx.compose.ui.Modifier,androidx.tv.material3.CarouselState,kotlin.Long,androidx.compose.animation.ContentTransfo

tv/leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/index.md

  • Network accessline 1
    [Video](https://www.youtube.com/watch?v=_X4tswgV67Y)
  • Network accessline 1
    [Video](https://www.youtube.com/watch?v=_X4tswgV67Y)
  • Network accessline 15
    If you are unfamiliar with using the Jetpack Compose toolkit, check out the [Compose pathway](https://developer.android.com/courses/pathways/compose). Many of the development principles for mobile Compose
  • Network accessline 15
    If you are unfamiliar with using the Jetpack Compose toolkit, check out the [Compose pathway](https://developer.android.com/courses/pathways/compose). Many of the development principles for mobile Compose
  • Network accessline 16
    [Compose pathway](https://developer.android.com/courses/pathways/compose). Many of the development principles for mobile Compose
  • Network accessline 16
    [Compose pathway](https://developer.android.com/courses/pathways/compose). Many of the development principles for mobile Compose
  • Network accessline 17
    apply to TV as well. See [Why Compose](https://developer.android.com/jetpack/compose/why-adopt) for more information about the general
  • Network accessline 17
    apply to TV as well. See [Why Compose](https://developer.android.com/jetpack/compose/why-adopt) for more information about the general
  • Network accessline 19
    for TV samples repository on GitHub](https://github.com/android/tv-samples/).
  • Network accessline 19
    for TV samples repository on GitHub](https://github.com/android/tv-samples/).
  • Network accessline 44
    Learn more about Gemini in Studio here: [https://developer.android.com/studio/gemini/overview](https://developer.android.com/studio/gemini/overview)
  • Network accessline 44
    Learn more about Gemini in Studio here: [https://developer.android.com/studio/gemini/overview](https://developer.android.com/studio/gemini/overview)
  • Network accessline 51
    Compose for TV works on Android TVs with Android 5.0 (API level 21) or higher. Using version 1.0 of Compose for TV requires version 1.3.0 of [androidx.compose](https://developer.android.com/jetpack/androidx/releases/compose) libraries and K
  • Network accessline 51
    Compose for TV works on Android TVs with Android 5.0 (API level 21) or higher. Using version 1.0 of Compose for TV requires version 1.3.0 of [androidx.compose](https://developer.android.com/jetpack/androidx/releases/compose) libraries and K
  • Network accessline 53
    1.3.0 of [androidx.compose](https://developer.android.com/jetpack/androidx/releases/compose) libraries and Kotlin 1.7.10.
  • Network accessline 53
    1.3.0 of [androidx.compose](https://developer.android.com/jetpack/androidx/releases/compose) libraries and Kotlin 1.7.10.
  • Network accessline 59
    adds libraries that offer TV-optimized components and make it easier to create user interfaces tailored to TV. In some cases those components share the same name as their non-TV counterparts, such as [`androidx.tv.material3.Button`](https:/
  • Network accessline 59
    adds libraries that offer TV-optimized components and make it easier to create user interfaces tailored to TV. In some cases those components share the same name as their non-TV counterparts, such as [`androidx.tv.material3.Button`](https:/
  • Network accessline 60
    user interfaces tailored to TV. In some cases those components share the same name as their non-TV counterparts, such as [`androidx.tv.material3.Button`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#B
  • Network accessline 60
    user interfaces tailored to TV. In some cases those components share the same name as their non-TV counterparts, such as [`androidx.tv.material3.Button`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#B
  • Network accessline 61
    name as their non-TV counterparts, such as [`androidx.tv.material3.Button`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.tv
  • Network accessline 61
    name as their non-TV counterparts, such as [`androidx.tv.material3.Button`](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.tv
  • Network accessline 62
    and [`androidx.compose.material3.Button`](https://developer.android.com/reference/kotlin/androidx/compose/material3/Button.composable#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.ui.graphics.Shape,and
  • Network accessline 62
    and [`androidx.compose.material3.Button`](https://developer.android.com/reference/kotlin/androidx/compose/material3/Button.composable#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.compose.ui.graphics.Shape,and
  • Network accessline 103
    The TV material components are designed for the living room, with **clear focus indicators** and **remote-friendly input behavior** . For details on how to use these specific components, check the [TV UI design guides](https://developer.and
  • Network accessline 103
    The TV material components are designed for the living room, with **clear focus indicators** and **remote-friendly input behavior** . For details on how to use these specific components, check the [TV UI design guides](https://developer.and
  • Network accessline 104
    indicators** and **remote-friendly input behavior** . For details on how to use these specific components, check the [TV UI design guides](https://developer.android.com/design/ui/tv/guides/components). ![](https://developer.android.com/stat
  • Network accessline 104
    indicators** and **remote-friendly input behavior** . For details on how to use these specific components, check the [TV UI design guides](https://developer.android.com/design/ui/tv/guides/components). ![](https://developer.android.com/stat
  • Network accessline 105
    to use these specific components, check the [TV UI design guides](https://developer.android.com/design/ui/tv/guides/components).
  • Network accessline 105
    to use these specific components, check the [TV UI design guides](https://developer.android.com/design/ui/tv/guides/components).
  • Network accessline 106
    ![](https://developer.android.com/static/training/tv/images/tv-material.svg) **Figure 1.** Sample components from the TV material library.
  • Network accessline 106
    ![](https://developer.android.com/static/training/tv/images/tv-material.svg) **Figure 1.** Sample components from the TV material library.
  • Network accessline 108
    Use the [TV version](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary) of APIs wherever possible to benefit from
  • Network accessline 108
    Use the [TV version](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary) of APIs wherever possible to benefit from
  • Network accessline 121
    | **TV Dependency** (androidx.tv.\*) | **Comparison** | **Mobile Dependency** (androidx.compose.\*) | |---|---|---| | [androidx.tv:tv-material](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary) | ***inste
  • Network accessline 121
    | **TV Dependency** (androidx.tv.\*) | **Comparison** | **Mobile Dependency** (androidx.compose.\*) | |---|---|---| | [androidx.tv:tv-material](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary) | ***inste
  • Network accessline 123
    | [androidx.tv:tv-material](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary) | ***instead of*** | androidx.compose.material3:material3 |
  • Network accessline 123
    | [androidx.tv:tv-material](https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary) | ***instead of*** | androidx.compose.material3:material3 |
  • Network accessline 127
    - [TV design guides](https://developer.android.com/design/ui/tv/guides/components)
  • Network accessline 127
    - [TV design guides](https://developer.android.com/design/ui/tv/guides/components)
  • Network accessline 132
    - [TV Material Catalog sample](https://github.com/android/tv-samples/tree/main/TvMaterialCatalog)
  • Network accessline 132
    - [TV Material Catalog sample](https://github.com/android/tv-samples/tree/main/TvMaterialCatalog)
  • Network accessline 134
    A catalog app that demonstrates how to implement   [Material Design](https://www.material.io) principles using Compose for TV.
  • Network accessline 134
    A catalog app that demonstrates how to implement   [Material Design](https://www.material.io) principles using Compose for TV.
  • Network accessline 135
    [Material Design](https://www.material.io) principles using Compose for TV.
  • Network accessline 135
    [Material Design](https://www.material.io) principles using Compose for TV.
  • Network accessline 137
    - [JetStream sample](https://github.com/android/tv-samples/tree/main/JetStreamCompose)
  • Network accessline 137
    - [JetStream sample](https://github.com/android/tv-samples/tree/main/JetStreamCompose)
  • Network accessline 142
    - [Introduction to Compose for TV](https://developer.android.com/codelabs/compose-for-tv-introduction)
  • Network accessline 142
    - [Introduction to Compose for TV](https://developer.android.com/codelabs/compose-for-tv-introduction)
  • Network accessline 151
    - [Create a catalog browser](https://developer.android.com/training/tv/playback/compose/browse)
  • Network accessline 151
    - [Create a catalog browser](https://developer.android.com/training/tv/playback/compose/browse)
  • Network accessline 152
    - [Build a details screen](https://developer.android.com/training/tv/playback/compose/details)
  • Network accessline 152
    - [Build a details screen](https://developer.android.com/training/tv/playback/compose/details)
  • Network accessline 153
    - [Create scrollable layouts](https://developer.android.com/training/tv/playback/compose/lists)
  • Network accessline 153
    - [Create scrollable layouts](https://developer.android.com/training/tv/playback/compose/lists)

wear/wear-compose-m3/SKILL.md

  • Network accessline 29
    1. **Current Wear OS Compose version in-use:** To find the installed library version, read `gradle/libs.versions.toml` or `build.gradle.kts` directly. Don't run `./gradlew dependencies` or other shell commands to resolve versions. 2. **Wear
  • Network accessline 29
    1. **Current Wear OS Compose version in-use:** To find the installed library version, read `gradle/libs.versions.toml` or `build.gradle.kts` directly. Don't run `./gradlew dependencies` or other shell commands to resolve versions. 2. **Wear
  • Network accessline 30
    2. **Wear OS Compose Material3 version:** If an internal tool is available to establish the **latest stable version** `{VERSION}` of `androidx.wear.compose:compose-material3`, use that tool.    - Otherwise, fetch the [official Maven metadat
  • Network accessline 30
    2. **Wear OS Compose Material3 version:** If an internal tool is available to establish the **latest stable version** `{VERSION}` of `androidx.wear.compose:compose-material3`, use that tool.    - Otherwise, fetch the [official Maven metadat
  • Network accessline 31
    - Otherwise, fetch the [official Maven metadata XML](https://dl.google.com/dl/android/maven2/androidx/wear/compose/compose-material3/maven-metadata.xml) to identify `{VERSION}` (highest number, ignoring `-alpha`, `-beta`, or `-rc`).
  • Network accessline 31
    - Otherwise, fetch the [official Maven metadata XML](https://dl.google.com/dl/android/maven2/androidx/wear/compose/compose-material3/maven-metadata.xml) to identify `{VERSION}` (highest number, ignoring `-alpha`, `-beta`, or `-rc`).

wear/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md

  • Network accessline 1
    [Material 3 Expressive](https://developer.android.com/design/ui/wear/guides/get-started) is the next evolution of Material Design. It includes
  • Network accessline 1
    [Material 3 Expressive](https://developer.android.com/design/ui/wear/guides/get-started) is the next evolution of Material Design. It includes
  • Network accessline 4
    This guide focuses on migrating from the [Wear Compose Material 2.5 (androidx.wear.compose)](https://developer.android.com/jetpack/androidx/releases/wear-compose#wear_compose_version_15_2) Jetpack library to the [Wear Compose Material 3
  • Network accessline 4
    This guide focuses on migrating from the [Wear Compose Material 2.5 (androidx.wear.compose)](https://developer.android.com/jetpack/androidx/releases/wear-compose#wear_compose_version_15_2) Jetpack library to the [Wear Compose Material 3
  • Network accessline 5
    (androidx.wear.compose)](https://developer.android.com/jetpack/androidx/releases/wear-compose#wear_compose_version_15_2) Jetpack library to the [Wear Compose Material 3
  • Network accessline 5
    (androidx.wear.compose)](https://developer.android.com/jetpack/androidx/releases/wear-compose#wear_compose_version_15_2) Jetpack library to the [Wear Compose Material 3
  • Network accessline 6
    (androidx.wear.compose.material3)](https://developer.android.com/jetpack/androidx/releases/wear-compose) Jetpack library for apps.
  • Network accessline 6
    (androidx.wear.compose.material3)](https://developer.android.com/jetpack/androidx/releases/wear-compose) Jetpack library for apps.
  • Network accessline 13
    For migrating your app code from M2.5 to M3, follow the same approach described in the [Compose Material migration phone guidance](https://developer.android.com/develop/ui/compose/designsystems/material2-material3), in particular:
  • Network accessline 13
    For migrating your app code from M2.5 to M3, follow the same approach described in the [Compose Material migration phone guidance](https://developer.android.com/develop/ui/compose/designsystems/material2-material3), in particular:
  • Network accessline 14
    in the [Compose Material migration phone guidance](https://developer.android.com/develop/ui/compose/designsystems/material2-material3), in particular:
  • Network accessline 14
    in the [Compose Material migration phone guidance](https://developer.android.com/develop/ui/compose/designsystems/material2-material3), in particular:
  • Network accessline 16
    - You shouldn't use both [M2.5 and M3 in a single app long-term](https://developer.android.com/develop/ui/compose/designsystems/material2-material3#approaches).
  • Network accessline 16
    - You shouldn't use both [M2.5 and M3 in a single app long-term](https://developer.android.com/develop/ui/compose/designsystems/material2-material3#approaches).
  • Network accessline 18
    - Adopt a [phased approach](https://developer.android.com/develop/ui/compose/designsystems/material2-material3#phased-approach).
  • Network accessline 18
    - Adopt a [phased approach](https://developer.android.com/develop/ui/compose/designsystems/material2-material3#phased-approach).
  • Network accessline 32
    See the latest M3 versions on the [Wear Compose releases page](https://developer.android.com/jetpack/androidx/releases/wear-compose).
  • Network accessline 32
    See the latest M3 versions on the [Wear Compose releases page](https://developer.android.com/jetpack/androidx/releases/wear-compose).
  • Network accessline 46
    In both M2.5 and M3, the theme composable is named [`MaterialTheme`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#MaterialTheme(androidx.wear.compose.material3.ColorScheme,androidx.wear.comp
  • Network accessline 46
    In both M2.5 and M3, the theme composable is named [`MaterialTheme`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#MaterialTheme(androidx.wear.compose.material3.ColorScheme,androidx.wear.comp
  • Network accessline 81
    The color system in M3 is significantly different from M2.5. The number of color parameters has increased, they have different names, and they map differently to M3 components. In Compose, this applies to the M2.5 [`Colors`](https://develop
  • Network accessline 81
    The color system in M3 is significantly different from M2.5. The number of color parameters has increased, they have different names, and they map differently to M3 components. In Compose, this applies to the M2.5 [`Colors`](https://develop
  • Network accessline 82
    parameters has increased, they have different names, and they map differently to M3 components. In Compose, this applies to the M2.5 [`Colors`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/Colors) class, the
  • Network accessline 82
    parameters has increased, they have different names, and they map differently to M3 components. In Compose, this applies to the M2.5 [`Colors`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/Colors) class, the
  • Network accessline 83
    M3 components. In Compose, this applies to the M2.5 [`Colors`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/Colors) class, the M3
  • Network accessline 83
    M3 components. In Compose, this applies to the M2.5 [`Colors`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/Colors) class, the M3
  • Network accessline 84
    [`ColorScheme`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/ColorScheme) class, and related functions:
  • Network accessline 84
    [`ColorScheme`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/ColorScheme) class, and related functions:
  • Network accessline 118
    A new feature in M3 is [dynamic color theming](https://m3.material.io/styles/color/dynamic-color/overview). If users change
  • Network accessline 118
    A new feature in M3 is [dynamic color theming](https://m3.material.io/styles/color/dynamic-color/overview). If users change
  • Network accessline 121
    Use the [`dynamicColorScheme`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#dynamicColorScheme(android.content.Context)) function to implement dynamic color scheme
  • Network accessline 121
    Use the [`dynamicColorScheme`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#dynamicColorScheme(android.content.Context)) function to implement dynamic color scheme
  • Network accessline 140
    The [typography system](https://m3.material.io/styles/typography/overview) in M3 is different from M2.5 and it includes
  • Network accessline 140
    The [typography system](https://m3.material.io/styles/typography/overview) in M3 is different from M2.5 and it includes
  • Network accessline 143
    - Nine new [text styles](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/Typography#public-properties_1)
  • Network accessline 143
    - Nine new [text styles](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/Typography#public-properties_1)
  • Network accessline 175
    The following [TextStyles](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/Typography.kt;l=115?q=displayLarge&ss=androidx/platform/fram
  • Network accessline 175
    The following [TextStyles](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:wear/compose/compose-material3/src/main/java/androidx/wear/compose/material3/Typography.kt;l=115?q=displayLarge&ss=androidx/platform/fram
  • Network accessline 189
    The [shape system](https://m3.material.io/styles/shape) in M3 is different from M2.5. The number of shape
  • Network accessline 189
    The [shape system](https://m3.material.io/styles/shape) in M3 is different from M2.5. The number of shape
  • Network accessline 199
    In Compose, this applies to the M2.5 [`Shapes`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/Shapes) class and the M3
  • Network accessline 199
    In Compose, this applies to the M2.5 [`Shapes`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/Shapes) class and the M3
  • Network accessline 200
    [`Shapes`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/Shapes) class:
  • Network accessline 200
    [`Shapes`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/Shapes) class:
  • Network accessline 226
    Use the Shapes parameter mapping from [Migrate from Material 2 to Material 3 in Compose](https://developer.android.com/develop/ui/compose/designsystems/material2-material3#shape) as a starting point.
  • Network accessline 226
    Use the Shapes parameter mapping from [Migrate from Material 2 to Material 3 in Compose](https://developer.android.com/develop/ui/compose/designsystems/material2-material3#shape) as a starting point.
  • Network accessline 227
    Compose](https://developer.android.com/develop/ui/compose/designsystems/material2-material3#shape) as a starting point.
  • Network accessline 227
    Compose](https://developer.android.com/develop/ui/compose/designsystems/material2-material3#shape) as a starting point.
  • Network accessline 236
    | Buttons | Shape morphing function | |---|---| | `IconButton` | [IconButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/IconButtonDefaults#animatedShapes(androidx.compose.foundatio
  • Network accessline 236
    | Buttons | Shape morphing function | |---|---| | `IconButton` | [IconButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/IconButtonDefaults#animatedShapes(androidx.compose.foundatio
  • Network accessline 237
    |---|---| | `IconButton` | [IconButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/IconButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,androidx.comp
  • Network accessline 237
    |---|---| | `IconButton` | [IconButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/IconButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,androidx.comp
  • Network accessline 238
    | `IconButton` | [IconButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/IconButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,androidx.compose.founda
  • Network accessline 238
    | `IconButton` | [IconButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/IconButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,androidx.compose.founda
  • Network accessline 239
    | `IconToggleButton` | [IconToggleButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/IconToggleButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,andro
  • Network accessline 239
    | `IconToggleButton` | [IconToggleButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/IconToggleButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,andro
  • Network accessline 240
    | `TextButton` | [TextButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/TextButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,androidx.compose.founda
  • Network accessline 240
    | `TextButton` | [TextButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/TextButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,androidx.compose.founda
  • Network accessline 241
    | `TextToggleButton` | [TextToggleButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/TextToggleButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,andro
  • Network accessline 241
    | `TextToggleButton` | [TextToggleButtonDefaults.animatedShapes](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/TextToggleButtonDefaults#animatedShapes(androidx.compose.foundation.shape.CornerBasedShape,andro
  • Network accessline 252
    | Material 2.5 | Material 3 | |---|---| | [androidx.wear.compose.material.dialog.Alert](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/dialog/package-summary#Alert(kotlin.Function1,androidx.compose.ui.Modifier
  • Network accessline 252
    | Material 2.5 | Material 3 | |---|---| | [androidx.wear.compose.material.dialog.Alert](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/dialog/package-summary#Alert(kotlin.Function1,androidx.compose.ui.Modifier
  • Network accessline 253
    |---|---| | [androidx.wear.compose.material.dialog.Alert](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/dialog/package-summary#Alert(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1,kotlin.Funct
  • Network accessline 253
    |---|---| | [androidx.wear.compose.material.dialog.Alert](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/dialog/package-summary#Alert(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1,kotlin.Funct
  • Network accessline 254
    | [androidx.wear.compose.material.dialog.Alert](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/dialog/package-summary#Alert(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1,kotlin.Function1,andro
  • Network accessline 254
    | [androidx.wear.compose.material.dialog.Alert](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/dialog/package-summary#Alert(kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Function1,kotlin.Function1,andro
  • Network accessline 255
    | [androidx.wear.compose.material.Button](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.material.Butto
  • Network accessline 255
    | [androidx.wear.compose.material.Button](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.wear.compose.material.Butto
  • Network accessline 256
    | [androidx.wear.compose.material.Card](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Card(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.graphics.painter.Painter,androidx.c
  • Network accessline 256
    | [androidx.wear.compose.material.Card](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Card(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.graphics.painter.Painter,androidx.c
  • Network accessline 257
    | [androidx.wear.compose.material.TitleCard](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#TitleCard(kotlin.Function0,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,kotlin.Functi
  • Network accessline 257
    | [androidx.wear.compose.material.TitleCard](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#TitleCard(kotlin.Function0,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,kotlin.Functi
  • Network accessline 258
    | [androidx.wear.compose.material.AppCard](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#AppCard(kotlin.Function0,kotlin.Function1,kotlin.Function1,kotlin.Function1,androidx.compose.ui.Modifie
  • Network accessline 258
    | [androidx.wear.compose.material.AppCard](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#AppCard(kotlin.Function0,kotlin.Function1,kotlin.Function1,kotlin.Function1,androidx.compose.ui.Modifie
  • Network accessline 259
    | [androidx.wear.compose.material.Checkbox](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Checkbox(kotlin.Boolean,androidx.compose.ui.Modifier,androidx.wear.compose.material.CheckboxColors,kot
  • Network accessline 259
    | [androidx.wear.compose.material.Checkbox](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Checkbox(kotlin.Boolean,androidx.compose.ui.Modifier,androidx.wear.compose.material.CheckboxColors,kot
  • Network accessline 260
    | [androidx.wear.compose.material.Chip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Chip(kotlin.Function0,androidx.wear.compose.material.ChipColors,androidx.wear.compose.material.ChipBorder,
  • Network accessline 260
    | [androidx.wear.compose.material.Chip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Chip(kotlin.Function0,androidx.wear.compose.material.ChipColors,androidx.wear.compose.material.ChipBorder,
  • Network accessline 261
    | [androidx.wear.compose.material.CompactChip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#CompactChip(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function1,kotlin.Function1,android
  • Network accessline 261
    | [androidx.wear.compose.material.CompactChip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#CompactChip(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function1,kotlin.Function1,android
  • Network accessline 262
    | [androidx.wear.compose.material.InlineSlider](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#InlineSlider(kotlin.Int,kotlin.Function1,kotlin.ranges.IntProgression,kotlin.Function0,kotlin.Func
  • Network accessline 262
    | [androidx.wear.compose.material.InlineSlider](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#InlineSlider(kotlin.Int,kotlin.Function1,kotlin.ranges.IntProgression,kotlin.Function0,kotlin.Func
  • Network accessline 263
    | [androidx.wear.compose.material.LocalContentAlpha()](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#LocalContentAlpha()) | Has been removed as not used by `Text` or `Icon` in Material 3 |
  • Network accessline 263
    | [androidx.wear.compose.material.LocalContentAlpha()](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#LocalContentAlpha()) | Has been removed as not used by `Text` or `Icon` in Material 3 |
  • Network accessline 264
    | [androidx.wear.compose.material.PositionIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#PositionIndicator(androidx.compose.foundation.lazy.LazyListState,androidx.compose.ui.Modifier
  • Network accessline 264
    | [androidx.wear.compose.material.PositionIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#PositionIndicator(androidx.compose.foundation.lazy.LazyListState,androidx.compose.ui.Modifier
  • Network accessline 265
    | [androidx.wear.compose.material.RadioButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#RadioButton(kotlin.Boolean,androidx.compose.ui.Modifier,androidx.wear.compose.material.RadioButtonC
  • Network accessline 265
    | [androidx.wear.compose.material.RadioButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#RadioButton(kotlin.Boolean,androidx.compose.ui.Modifier,androidx.wear.compose.material.RadioButtonC
  • Network accessline 266
    | [androidx.wear.compose.material.SwipeToRevealCard](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Stepper(kotlin.Int,kotlin.Function1,kotlin.ranges.IntProgression,kotlin.Function0,kotlin.Fun
  • Network accessline 266
    | [androidx.wear.compose.material.SwipeToRevealCard](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Stepper(kotlin.Int,kotlin.Function1,kotlin.ranges.IntProgression,kotlin.Function0,kotlin.Fun
  • Network accessline 267
    | [androidx.wear.compose.material.SwipeToRevealChip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#SwipeToRevealChip(kotlin.Function1,androidx.wear.compose.foundation.RevealState,kotlin.Functi
  • Network accessline 267
    | [androidx.wear.compose.material.SwipeToRevealChip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#SwipeToRevealChip(kotlin.Function1,androidx.wear.compose.foundation.RevealState,kotlin.Functi
  • Network accessline 268
    | [androidx.wear.compose.material.Scaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Scaffold(androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function0,kotlin.Function0,kotlin.Functi
  • Network accessline 268
    | [androidx.wear.compose.material.Scaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Scaffold(androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function0,kotlin.Function0,kotlin.Functi
  • Network accessline 269
    | [androidx.wear.compose.material.SplitToggleChip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#SplitToggleChip(kotlin.Boolean,kotlin.Function1,kotlin.Function1,kotlin.Function0,kotlin.Functi
  • Network accessline 269
    | [androidx.wear.compose.material.SplitToggleChip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#SplitToggleChip(kotlin.Boolean,kotlin.Function1,kotlin.Function1,kotlin.Function0,kotlin.Functi
  • Network accessline 270
    | [androidx.wear.compose.material.Switch](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Switch(kotlin.Boolean,androidx.compose.ui.Modifier,androidx.wear.compose.material.SwitchColors,kotlin.Bo
  • Network accessline 270
    | [androidx.wear.compose.material.Switch](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Switch(kotlin.Boolean,androidx.compose.ui.Modifier,androidx.wear.compose.material.SwitchColors,kotlin.Bo
  • Network accessline 271
    | [androidx.wear.compose.material.ToggleButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#ToggleButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.
  • Network accessline 271
    | [androidx.wear.compose.material.ToggleButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#ToggleButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.
  • Network accessline 272
    | [androidx.wear.compose.material.ToggleChip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#ToggleChip(kotlin.Boolean,kotlin.Function1,kotlin.Function1,kotlin.Function0,androidx.compose.ui.Mod
  • Network accessline 272
    | [androidx.wear.compose.material.ToggleChip](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#ToggleChip(kotlin.Boolean,kotlin.Function1,kotlin.Function1,kotlin.Function0,androidx.compose.ui.Mod
  • Network accessline 273
    | [androidx.wear.compose.material.Vignette](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Vignette(androidx.wear.compose.material.VignettePosition,androidx.compose.ui.Modifier)) | Removed as n
  • Network accessline 273
    | [androidx.wear.compose.material.Vignette](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#Vignette(androidx.wear.compose.material.VignettePosition,androidx.compose.ui.Modifier)) | Removed as n
  • Network accessline 278
    | Material 3 | Material 2.5 equivalent component (if not new in M3) | |---|---| | [androidx.wear.compose.material3.AlertDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AlertDialog(kotli
  • Network accessline 278
    | Material 3 | Material 2.5 equivalent component (if not new in M3) | |---|---| | [androidx.wear.compose.material3.AlertDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AlertDialog(kotli
  • Network accessline 279
    |---|---| | [androidx.wear.compose.material3.AlertDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AlertDialog(kotlin.Boolean,kotlin.Function0,kotlin.Function0,androidx.compose.ui.Modifi
  • Network accessline 279
    |---|---| | [androidx.wear.compose.material3.AlertDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AlertDialog(kotlin.Boolean,kotlin.Function0,kotlin.Function0,androidx.compose.ui.Modifi
  • Network accessline 280
    | [androidx.wear.compose.material3.AlertDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AlertDialog(kotlin.Boolean,kotlin.Function0,kotlin.Function0,androidx.compose.ui.Modifier,kotlin.
  • Network accessline 280
    | [androidx.wear.compose.material3.AlertDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AlertDialog(kotlin.Boolean,kotlin.Function0,kotlin.Function0,androidx.compose.ui.Modifier,kotlin.
  • Network accessline 281
    | [androidx.wear.compose.material3.AnimatedPage](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AnimatedPage(kotlin.Int,androidx.wear.compose.foundation.pager.PagerState,androidx.compose.ui.gr
  • Network accessline 281
    | [androidx.wear.compose.material3.AnimatedPage](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AnimatedPage(kotlin.Int,androidx.wear.compose.foundation.pager.PagerState,androidx.compose.ui.gr
  • Network accessline 282
    | [androidx.wear.compose.material3.AnimatedText](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AnimatedText(kotlin.String,androidx.wear.compose.material3.AnimatedTextFontRegistry,kotlin.Funct
  • Network accessline 282
    | [androidx.wear.compose.material3.AnimatedText](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AnimatedText(kotlin.String,androidx.wear.compose.material3.AnimatedTextFontRegistry,kotlin.Funct
  • Network accessline 283
    | [androidx.wear.compose.material3.AppScaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AppScaffold(androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function1)) | [androidx.wear.com
  • Network accessline 283
    | [androidx.wear.compose.material3.AppScaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#AppScaffold(androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function1)) | [androidx.wear.com
  • Network accessline 284
    | [androidx.wear.compose.material3.Button](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boolean,and
  • Network accessline 284
    | [androidx.wear.compose.material3.Button](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boolean,and
  • Network accessline 285
    | [androidx.wear.compose.material3.ButtonGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ButtonGroup(androidx.compose.ui.Modifier,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,
  • Network accessline 285
    | [androidx.wear.compose.material3.ButtonGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ButtonGroup(androidx.compose.ui.Modifier,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,
  • Network accessline 286
    | [androidx.wear.compose.material3.Card](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Card(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boolean,android
  • Network accessline 286
    | [androidx.wear.compose.material3.Card](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Card(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boolean,android
  • Network accessline 287
    | [androidx.wear.compose.material3.CheckboxButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#CheckboxButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,and
  • Network accessline 287
    | [androidx.wear.compose.material3.CheckboxButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#CheckboxButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,and
  • Network accessline 288
    | [androidx.wear.compose.material3.ChildButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ChildButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.B
  • Network accessline 288
    | [androidx.wear.compose.material3.ChildButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ChildButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.B
  • Network accessline 289
    | [androidx.wear.compose.material3.CircularProgressIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#CircularProgressIndicator(androidx.compose.ui.Modifier,androidx.wear.compose.materi
  • Network accessline 289
    | [androidx.wear.compose.material3.CircularProgressIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#CircularProgressIndicator(androidx.compose.ui.Modifier,androidx.wear.compose.materi
  • Network accessline 290
    | [androidx.wear.compose.material3.CompactButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#CompactButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotl
  • Network accessline 290
    | [androidx.wear.compose.material3.CompactButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#CompactButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotl
  • Network accessline 291
    | [androidx.wear.compose.material3.ConfirmationDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ConfirmationDialog(kotlin.Boolean,kotlin.Function0,kotlin.Function1,androidx.compose.ui.Mo
  • Network accessline 291
    | [androidx.wear.compose.material3.ConfirmationDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ConfirmationDialog(kotlin.Boolean,kotlin.Function0,kotlin.Function1,androidx.compose.ui.Mo
  • Network accessline 292
    | [androidx.wear.compose.material3.curvedText](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#(androidx.wear.compose.foundation.CurvedScope).curvedText(kotlin.String,androidx.wear.compose.foun
  • Network accessline 292
    | [androidx.wear.compose.material3.curvedText](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#(androidx.wear.compose.foundation.CurvedScope).curvedText(kotlin.String,androidx.wear.compose.foun
  • Network accessline 293
    | [androidx.wear.compose.material3.DatePicker](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#DatePicker(java.time.LocalDate,kotlin.Function1,androidx.compose.ui.Modifier,java.time.LocalDate,j
  • Network accessline 293
    | [androidx.wear.compose.material3.DatePicker](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#DatePicker(java.time.LocalDate,kotlin.Function1,androidx.compose.ui.Modifier,java.time.LocalDate,j
  • Network accessline 294
    | [androidx.wear.compose.material3.Dialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Dialog(kotlin.Boolean,kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.window.DialogP
  • Network accessline 294
    | [androidx.wear.compose.material3.Dialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Dialog(kotlin.Boolean,kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.window.DialogP
  • Network accessline 295
    | [androidx.wear.compose.material3.EdgeButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#EdgeButton(kotlin.Function0,androidx.compose.ui.Modifier,androidx.wear.compose.material3.EdgeButto
  • Network accessline 295
    | [androidx.wear.compose.material3.EdgeButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#EdgeButton(kotlin.Function0,androidx.compose.ui.Modifier,androidx.wear.compose.material3.EdgeButto
  • Network accessline 296
    | [androidx.wear.compose.material3.FadingExpandingLabel](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#FadingExpandingLabel(kotlin.String,androidx.compose.ui.Modifier,androidx.compose.ui.grap
  • Network accessline 296
    | [androidx.wear.compose.material3.FadingExpandingLabel](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#FadingExpandingLabel(kotlin.String,androidx.compose.ui.Modifier,androidx.compose.ui.grap
  • Network accessline 297
    | [androidx.wear.compose.material3.FilledTonalButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#FilledTonalButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Str
  • Network accessline 297
    | [androidx.wear.compose.material3.FilledTonalButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#FilledTonalButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Str
  • Network accessline 298
    | [androidx.wear.compose.material3.HorizontalPageIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#HorizontalPageIndicator(androidx.wear.compose.foundation.pager.PagerState,androidx.co
  • Network accessline 298
    | [androidx.wear.compose.material3.HorizontalPageIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#HorizontalPageIndicator(androidx.wear.compose.foundation.pager.PagerState,androidx.co
  • Network accessline 299
    | [androidx.wear.compose.material3.HorizontalPagerScaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#HorizontalPagerScaffold(androidx.wear.compose.foundation.pager.PagerState,androidx.co
  • Network accessline 299
    | [androidx.wear.compose.material3.HorizontalPagerScaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#HorizontalPagerScaffold(androidx.wear.compose.foundation.pager.PagerState,androidx.co
  • Network accessline 300
    | [androidx.wear.compose.material3.Icon](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Icon(androidx.compose.ui.graphics.ImageBitmap,kotlin.String,androidx.compose.ui.Modifier,androidx.compos
  • Network accessline 300
    | [androidx.wear.compose.material3.Icon](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Icon(androidx.compose.ui.graphics.ImageBitmap,kotlin.String,androidx.compose.ui.Modifier,androidx.compos
  • Network accessline 301
    | [androidx.wear.compose.material3.IconButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#IconButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boo
  • Network accessline 301
    | [androidx.wear.compose.material3.IconButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#IconButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boo
  • Network accessline 302
    | [androidx.wear.compose.material3.IconToggleButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#IconToggleButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean
  • Network accessline 302
    | [androidx.wear.compose.material3.IconToggleButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#IconToggleButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean
  • Network accessline 303
    | [androidx.wear.compose.material3.LevelIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#LevelIndicator(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.ranges.ClosedFloatingPoint
  • Network accessline 303
    | [androidx.wear.compose.material3.LevelIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#LevelIndicator(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.ranges.ClosedFloatingPoint
  • Network accessline 304
    | [androidx.wear.compose.material3.LinearProgressIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#LinearProgressIndicator(kotlin.Function0,androidx.compose.ui.Modifier,androidx.wear.c
  • Network accessline 304
    | [androidx.wear.compose.material3.LinearProgressIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#LinearProgressIndicator(kotlin.Function0,androidx.compose.ui.Modifier,androidx.wear.c
  • Network accessline 305
    | [androidx.wear.compose.material3.ListHeader](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ListHeader(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.ui.gra
  • Network accessline 305
    | [androidx.wear.compose.material3.ListHeader](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ListHeader(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.ui.gra
  • Network accessline 306
    | [androidx.wear.compose.material3.ListSubHeader](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ListSubHeader(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.
  • Network accessline 306
    | [androidx.wear.compose.material3.ListSubHeader](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ListSubHeader(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.
  • Network accessline 307
    | [androidx.wear.compose.material3.MaterialTheme](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#MaterialTheme(androidx.wear.compose.material3.ColorScheme,androidx.wear.compose.material3.Typog
  • Network accessline 307
    | [androidx.wear.compose.material3.MaterialTheme](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#MaterialTheme(androidx.wear.compose.material3.ColorScheme,androidx.wear.compose.material3.Typog
  • Network accessline 308
    | [androidx.wear.compose.material3.OpenOnPhoneDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#OpenOnPhoneDialog(kotlin.Boolean,kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Funct
  • Network accessline 308
    | [androidx.wear.compose.material3.OpenOnPhoneDialog](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#OpenOnPhoneDialog(kotlin.Boolean,kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Funct
  • Network accessline 309
    | [androidx.wear.compose.material3.Picker](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Picker(androidx.wear.compose.material3.PickerState,kotlin.String,androidx.compose.ui.Modifier,kotlin.B
  • Network accessline 309
    | [androidx.wear.compose.material3.Picker](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Picker(androidx.wear.compose.material3.PickerState,kotlin.String,androidx.compose.ui.Modifier,kotlin.B
  • Network accessline 310
    | [androidx.wear.compose.material3.PickerGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#PickerGroup(kotlin.Int,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,kotlin.Functi
  • Network accessline 310
    | [androidx.wear.compose.material3.PickerGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#PickerGroup(kotlin.Int,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,kotlin.Functi
  • Network accessline 311
    | [androidx.wear.compose.material3.RadioButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#RadioButton(kotlin.Boolean,kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.
  • Network accessline 311
    | [androidx.wear.compose.material3.RadioButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#RadioButton(kotlin.Boolean,kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Boolean,androidx.
  • Network accessline 312
    | [androidx.wear.compose.material3.ScreenScaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ScreenScaffold(androidx.compose.ui.Modifier,kotlin.Function0,androidx.wear.compose.foundation.
  • Network accessline 312
    | [androidx.wear.compose.material3.ScreenScaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ScreenScaffold(androidx.compose.ui.Modifier,kotlin.Function0,androidx.wear.compose.foundation.
  • Network accessline 313
    | [androidx.wear.compose.material3.ScrollIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ScrollIndicator(androidx.compose.foundation.lazy.LazyListState,androidx.compose.ui.Modifier,k
  • Network accessline 313
    | [androidx.wear.compose.material3.ScrollIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#ScrollIndicator(androidx.compose.foundation.lazy.LazyListState,androidx.compose.ui.Modifier,k
  • Network accessline 314
    | [androidx.wear.compose.material3.scrollAway](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#(androidx.compose.ui.Modifier).scrollAway(androidx.wear.compose.foundation.ScrollInfoProvider,kotl
  • Network accessline 314
    | [androidx.wear.compose.material3.scrollAway](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#(androidx.compose.ui.Modifier).scrollAway(androidx.wear.compose.foundation.ScrollInfoProvider,kotl
  • Network accessline 315
    | [androidx.wear.compose.material3.SegmentedCircularProgressIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SegmentedCircularProgressIndicator(kotlin.Int,kotlin.Function1,androidx.co
  • Network accessline 315
    | [androidx.wear.compose.material3.SegmentedCircularProgressIndicator](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SegmentedCircularProgressIndicator(kotlin.Int,kotlin.Function1,androidx.co
  • Network accessline 316
    | [androidx.wear.compose.material3.Slider](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Slider(kotlin.Int,kotlin.Function1,kotlin.ranges.IntProgression,androidx.compose.ui.Modifier,kotlin.Fu
  • Network accessline 316
    | [androidx.wear.compose.material3.Slider](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Slider(kotlin.Int,kotlin.Function1,kotlin.ranges.IntProgression,androidx.compose.ui.Modifier,kotlin.Fu
  • Network accessline 317
    | [androidx.wear.compose.material3.SplitRadioButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SplitRadioButton(kotlin.Boolean,kotlin.Function0,kotlin.String,kotlin.Function0,androidx.com
  • Network accessline 317
    | [androidx.wear.compose.material3.SplitRadioButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SplitRadioButton(kotlin.Boolean,kotlin.Function0,kotlin.String,kotlin.Function0,androidx.com
  • Network accessline 318
    | [androidx.wear.compose.material3.SplitCheckboxButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SplitCheckboxButton(kotlin.Boolean,kotlin.Function1,kotlin.String,kotlin.Function0,androi
  • Network accessline 318
    | [androidx.wear.compose.material3.SplitCheckboxButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SplitCheckboxButton(kotlin.Boolean,kotlin.Function1,kotlin.String,kotlin.Function0,androi
  • Network accessline 319
    | [androidx.wear.compose.material3.SplitSwitchButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SplitSwitchButton(kotlin.Boolean,kotlin.Function1,kotlin.String,kotlin.Function0,androidx.c
  • Network accessline 319
    | [androidx.wear.compose.material3.SplitSwitchButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SplitSwitchButton(kotlin.Boolean,kotlin.Function1,kotlin.String,kotlin.Function0,androidx.c
  • Network accessline 320
    | [androidx.wear.compose.material3.Stepper](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Stepper(kotlin.Int,kotlin.Function1,kotlin.ranges.IntProgression,kotlin.Function0,kotlin.Function0,an
  • Network accessline 320
    | [androidx.wear.compose.material3.Stepper](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Stepper(kotlin.Int,kotlin.Function1,kotlin.ranges.IntProgression,kotlin.Function0,kotlin.Function0,an
  • Network accessline 321
    | [androidx.wear.compose.material3.SwipeToDismissBox](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.
  • Network accessline 321
    | [androidx.wear.compose.material3.SwipeToDismissBox](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SwipeToDismissBox(androidx.wear.compose.foundation.SwipeToDismissBoxState,androidx.compose.
  • Network accessline 322
    | [androidx.wear.compose.material3.SwipeToReveal](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SwipeToReveal(kotlin.Function1,androidx.compose.ui.Modifier,androidx.wear.compose.foundation.Re
  • Network accessline 322
    | [androidx.wear.compose.material3.SwipeToReveal](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SwipeToReveal(kotlin.Function1,androidx.compose.ui.Modifier,androidx.wear.compose.foundation.Re
  • Network accessline 323
    | [androidx.wear.compose.material3.SwitchButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SwitchButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,android
  • Network accessline 323
    | [androidx.wear.compose.material3.SwitchButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#SwitchButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean,android
  • Network accessline 324
    | [androidx.wear.compose.material3.Text](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Text(kotlin.String,androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.ui.u
  • Network accessline 324
    | [androidx.wear.compose.material3.Text](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Text(kotlin.String,androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.ui.u
  • Network accessline 325
    | [androidx.wear.compose.material3.TextButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#TextButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boo
  • Network accessline 325
    | [androidx.wear.compose.material3.TextButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#TextButton(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boo
  • Network accessline 326
    | [androidx.wear.compose.material3.TextToggleButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#TextToggleButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean
  • Network accessline 326
    | [androidx.wear.compose.material3.TextToggleButton](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#TextToggleButton(kotlin.Boolean,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.Boolean
  • Network accessline 327
    | [androidx.wear.compose.material3.TimeText](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#TimeText(androidx.compose.ui.Modifier,androidx.wear.compose.foundation.CurvedModifier,kotlin.Float,a
  • Network accessline 327
    | [androidx.wear.compose.material3.TimeText](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#TimeText(androidx.compose.ui.Modifier,androidx.wear.compose.foundation.CurvedModifier,kotlin.Float,a
  • Network accessline 328
    | [androidx.wear.compose.material3.VerticalPagerScaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#VerticalPagerScaffold(androidx.wear.compose.foundation.pager.PagerState,androidx.compos
  • Network accessline 328
    | [androidx.wear.compose.material3.VerticalPagerScaffold](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#VerticalPagerScaffold(androidx.wear.compose.foundation.pager.PagerState,androidx.compos
  • Network accessline 333
    | Wear Compose Foundation 1.8.0-alpha02 |   | |---|---| | [androidx.wear.compose.foundation.hierarchicalFocusGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#(androidx.compose.ui.Modifie
  • Network accessline 333
    | Wear Compose Foundation 1.8.0-alpha02 |   | |---|---| | [androidx.wear.compose.foundation.hierarchicalFocusGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#(androidx.compose.ui.Modifie
  • Network accessline 334
    |---|---| | [androidx.wear.compose.foundation.hierarchicalFocusGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#(androidx.compose.ui.Modifier).hierarchicalFocusGroup(kotlin.Boolean)) | U
  • Network accessline 334
    |---|---| | [androidx.wear.compose.foundation.hierarchicalFocusGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#(androidx.compose.ui.Modifier).hierarchicalFocusGroup(kotlin.Boolean)) | U
  • Network accessline 335
    | [androidx.wear.compose.foundation.hierarchicalFocusGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#(androidx.compose.ui.Modifier).hierarchicalFocusGroup(kotlin.Boolean)) | Used to ann
  • Network accessline 335
    | [androidx.wear.compose.foundation.hierarchicalFocusGroup](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/package-summary#(androidx.compose.ui.Modifier).hierarchicalFocusGroup(kotlin.Boolean)) | Used to ann
  • Network accessline 336
    | [androidx.wear.compose.foundation.pager.HorizontalPager](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/pager/package-summary#HorizontalPager(androidx.wear.compose.foundation.pager.PagerState,androidx.comp
  • Network accessline 336
    | [androidx.wear.compose.foundation.pager.HorizontalPager](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/pager/package-summary#HorizontalPager(androidx.wear.compose.foundation.pager.PagerState,androidx.comp
  • Network accessline 337
    | [androidx.wear.compose.foundation.pager.VerticalPager](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/pager/package-summary#VerticalPager(androidx.wear.compose.foundation.pager.PagerState,androidx.compose.
  • Network accessline 337
    | [androidx.wear.compose.foundation.pager.VerticalPager](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/pager/package-summary#VerticalPager(androidx.wear.compose.foundation.pager.PagerState,androidx.compose.
  • Network accessline 338
    | [androidx.wear.compose.foundation.lazy.TransformingLazyColumn](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/lazy/package-summary#TransformingLazyColumn(androidx.compose.ui.Modifier,androidx.wear.compose.
  • Network accessline 338
    | [androidx.wear.compose.foundation.lazy.TransformingLazyColumn](https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/lazy/package-summary#TransformingLazyColumn(androidx.compose.ui.Modifier,androidx.wear.compose.
  • Network accessline 343
    Buttons in M3 are different from M2.5. The M2.5 Chip has been replaced by Button. [`Button`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier
  • Network accessline 343
    Buttons in M3 are different from M2.5. The M2.5 Chip has been replaced by Button. [`Button`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier
  • Network accessline 344
    Button. [`Button`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boolean,androidx.compose.ui.graphic
  • Network accessline 344
    Button. [`Button`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#Button(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.String,kotlin.Boolean,androidx.compose.ui.graphic
  • Network accessline 370
    M3 also includes new button variations. Check them out on the [Compose Material 3 API reference overview](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary).
  • Network accessline 370
    M3 also includes new button variations. Check them out on the [Compose Material 3 API reference overview](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary).
  • Network accessline 371
    3 API reference overview](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary).
  • Network accessline 371
    3 API reference overview](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary).
  • Network accessline 373
    M3 introduces a new button: [`EdgeButton`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#EdgeButton(kotlin.Function0,androidx.compose.ui.Modifier,androidx.wear.compose.material3.EdgeButtonSiz
  • Network accessline 373
    M3 introduces a new button: [`EdgeButton`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#EdgeButton(kotlin.Function0,androidx.compose.ui.Modifier,androidx.wear.compose.material3.EdgeButtonSiz
  • Network accessline 474
    > [!NOTE] > **Note:** `AppScaffold` and `ScreenScaffold` from [Horologist](https://github.com/google/horologist) haven't been migrated to M3. To maintain correct scrolling behavior and `TimeText` elements, migrate to the `AppScaffold` and `
  • Network accessline 474
    > [!NOTE] > **Note:** `AppScaffold` and `ScreenScaffold` from [Horologist](https://github.com/google/horologist) haven't been migrated to M3. To maintain correct scrolling behavior and `TimeText` elements, migrate to the `AppScaffold` and `
  • Network accessline 475
    > **Note:** `AppScaffold` and `ScreenScaffold` from [Horologist](https://github.com/google/horologist) haven't been migrated to M3. To maintain correct scrolling behavior and `TimeText` elements, migrate to the `AppScaffold` and `ScreenScaf
  • Network accessline 475
    > **Note:** `AppScaffold` and `ScreenScaffold` from [Horologist](https://github.com/google/horologist) haven't been migrated to M3. To maintain correct scrolling behavior and `TimeText` elements, migrate to the `AppScaffold` and `ScreenScaf
  • Network accessline 477
    If you are using a `HorizontalPager` with [`HorizontalPageIndicator`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#HorizontalPageIndicator(androidx.wear.compose.material.PageIndicatorState,an
  • Network accessline 477
    If you are using a `HorizontalPager` with [`HorizontalPageIndicator`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material/package-summary#HorizontalPageIndicator(androidx.wear.compose.material.PageIndicatorState,an
  • Network accessline 478
    can migrate to `HorizontalPagerScaffold`. [`HorizontalPagerScaffold`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#HorizontalPagerScaffold(androidx.wear.compose.foundation.pager.PagerState,a
  • Network accessline 478
    can migrate to `HorizontalPagerScaffold`. [`HorizontalPagerScaffold`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#HorizontalPagerScaffold(androidx.wear.compose.foundation.pager.PagerState,a
  • Network accessline 555
    Finally, M3 introduces a [`VerticalPagerScaffold`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#VerticalPagerScaffold(androidx.wear.compose.foundation.pager.PagerState,androidx.compose.ui.Mo
  • Network accessline 555
    Finally, M3 introduces a [`VerticalPagerScaffold`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#VerticalPagerScaffold(androidx.wear.compose.foundation.pager.PagerState,androidx.compose.ui.Mo
  • Network accessline 599
    - [`Modifier.placeholder`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#(androidx.compose.ui.Modifier).placeholder(androidx.wear.compose.material3.PlaceholderState,androidx.compose.ui.graphi
  • Network accessline 599
    - [`Modifier.placeholder`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#(androidx.compose.ui.Modifier).placeholder(androidx.wear.compose.material3.PlaceholderState,androidx.compose.ui.graphi
  • Network accessline 600
    - A placeholder shimmer effect [`Modifier.placeholderShimmer`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#(androidx.compose.ui.Modifier).placeholderShimmer(androidx.wear.compose.material3.
  • Network accessline 600
    - A placeholder shimmer effect [`Modifier.placeholderShimmer`](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#(androidx.compose.ui.Modifier).placeholderShimmer(androidx.wear.compose.material3.
  • Network accessline 698
    - [Wear OS samples on GitHub](https://github.com/android/wear-os-samples/)
  • Network accessline 698
    - [Wear OS samples on GitHub](https://github.com/android/wear-os-samples/)
  • Network accessline 699
    - [Compose for Wear OS codelab](https://developer.android.com/codelabs/compose-for-wear-os#0)
  • Network accessline 699
    - [Compose for Wear OS codelab](https://developer.android.com/codelabs/compose-for-wear-os#0)
  • Network accessline 700
    - [Jetcaster sample](https://github.com/android/compose-samples/tree/main/Jetcaster)
  • Network accessline 700
    - [Jetcaster sample](https://github.com/android/compose-samples/tree/main/Jetcaster)
  • Network accessline 704
    - [Compose Material 3 API reference](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary)
  • Network accessline 704
    - [Compose Material 3 API reference](https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary)
  • Network accessline 705
    - [Compose Material 3 samples in source code](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/)
  • Network accessline 705
    - [Compose Material 3 samples in source code](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:wear/compose/compose-material3/samples/src/main/java/androidx/wear/compose/material3/samples/)
  • Network accessline 709
    - [Design guidance](https://developer.android.com/design/ui/wear/guides/get-started)
  • Network accessline 709
    - [Design guidance](https://developer.android.com/design/ui/wear/guides/get-started)

wear/wear-compose-m3/references/foundation/AmbientModeSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/foundation/CurvedWorldSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/foundation/ExpandableSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/foundation/PagerSamples.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/foundation/RotarySamples.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/AlertDialogSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/AnimatedTextSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/ButtonGroupSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/ButtonSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/CardSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/CheckboxButtonSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/ConfirmationDialogSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/CurvedTextSamples.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/DatePickerSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/EdgeButtonSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/IconButtonSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/IconToggleButtonSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/LevelIndicatorSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/ListHeaderSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/OneHandedGestureSamples.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/PageIndicatorSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/PagerScaffoldSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/PickerGroupSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/PickerSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/PlaceholderSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/ProgressIndicatorSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/RadioButtonSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/ScaffoldSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/ScrollAwaySample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/ScrollIndicatorSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/SliderSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/StepperSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/SurfaceTransformationSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/SwipeToRevealSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/SwitchButtonSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/TextButtonSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/TextToggleButtonSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/TimePickerSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/TimeTextSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/TransformationSpecSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.md

  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 7
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 8
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    *      http://www.apache.org/licenses/LICENSE-2.0

wear/wear-widgets/SKILL.md

  • Network accessline 30
    1. **Resolve library versions** : Resolve the latest versions for `{GLANCE_WEAR_VERSION}` (`androidx.glance.wear`), `{COMPOSE_REMOTE_VERSION}` (`androidx.compose.remote`), and `{WEAR_COMPOSE_REMOTE_VERSION}` (`androidx.wear.compose.remote`)
  • Network accessline 30
    1. **Resolve library versions** : Resolve the latest versions for `{GLANCE_WEAR_VERSION}` (`androidx.glance.wear`), `{COMPOSE_REMOTE_VERSION}` (`androidx.compose.remote`), and `{WEAR_COMPOSE_REMOTE_VERSION}` (`androidx.wear.compose.remote`)
  • Network accessline 31
    - Use an available dependency lookup tool if present.    - Otherwise, fetch the latest version from Google Maven metadata ([Glance Wear metadata](https://dl.google.com/dl/android/maven2/androidx/glance/wear/wear/maven-metadata.xml), [Compos
  • Network accessline 31
    - Use an available dependency lookup tool if present.    - Otherwise, fetch the latest version from Google Maven metadata ([Glance Wear metadata](https://dl.google.com/dl/android/maven2/androidx/glance/wear/wear/maven-metadata.xml), [Compos
  • Network accessline 32
    - Otherwise, fetch the latest version from Google Maven metadata ([Glance Wear metadata](https://dl.google.com/dl/android/maven2/androidx/glance/wear/wear/maven-metadata.xml), [Compose Remote metadata](https://dl.google.com/dl/android/maven
  • Network accessline 32
    - Otherwise, fetch the latest version from Google Maven metadata ([Glance Wear metadata](https://dl.google.com/dl/android/maven2/androidx/glance/wear/wear/maven-metadata.xml), [Compose Remote metadata](https://dl.google.com/dl/android/maven

wear/wear-widgets/references/widget-service-and-manifest.md

  • Network accessline 73
    <wearwidget-provider     xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 73
    <wearwidget-provider     xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 74
    xmlns:android="http://schemas.android.com/apk/res/android"
  • Network accessline 74
    xmlns:android="http://schemas.android.com/apk/res/android"

xr/display-glasses-with-jetpack-compose-glimmer/SKILL.md

  • Network accessline 40
    = release(37) }`). Update `compileSdk` to 37 if lower. - When adding dependencies, follow the instructions in [Create your first   activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-ac
  • Network accessline 40
    = release(37) }`). Update `compileSdk` to 37 if lower. - When adding dependencies, follow the instructions in [Create your first   activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-ac
  • Network accessline 41
    - When adding dependencies, follow the instructions in [Create your first   activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-activity):   - `androidx.xr.glimmer:glimmer` (minimum `1.
  • Network accessline 41
    - When adding dependencies, follow the instructions in [Create your first   activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-activity):   - `androidx.xr.glimmer:glimmer` (minimum `1.
  • Network accessline 42
    activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-activity):
  • Network accessline 42
    activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-activity):
  • Network accessline 59
    - **Set up projected activity** : When creating a projected activity, follow   [Create your first activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-activity) and
  • Network accessline 59
    - **Set up projected activity** : When creating a projected activity, follow   [Create your first activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-activity) and
  • Network accessline 60
    [Create your first activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-activity) and
  • Network accessline 60
    [Create your first activity for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/first-activity) and
  • Network accessline 98
    - **UI library and font** : When declaring the Glimmer, Google Fonts, and   Projected artifacts in `app/build.gradle.kts`, follow [Declaring Jetpack   Compose Glimmer Dependencies](https://developer.android.com/jetpack/androidx/releases/xr-
  • Network accessline 98
    - **UI library and font** : When declaring the Glimmer, Google Fonts, and   Projected artifacts in `app/build.gradle.kts`, follow [Declaring Jetpack   Compose Glimmer Dependencies](https://developer.android.com/jetpack/androidx/releases/xr-
  • Network accessline 99
    Projected artifacts in `app/build.gradle.kts`, follow [Declaring Jetpack   Compose Glimmer Dependencies](https://developer.android.com/jetpack/androidx/releases/xr-glimmer), and follow   [glimmersansflextypography-source.md](references/glim
  • Network accessline 99
    Projected artifacts in `app/build.gradle.kts`, follow [Declaring Jetpack   Compose Glimmer Dependencies](https://developer.android.com/jetpack/androidx/releases/xr-glimmer), and follow   [glimmersansflextypography-source.md](references/glim
  • Network accessline 100
    Compose Glimmer Dependencies](https://developer.android.com/jetpack/androidx/releases/xr-glimmer), and follow
  • Network accessline 100
    Compose Glimmer Dependencies](https://developer.android.com/jetpack/androidx/releases/xr-glimmer), and follow
  • Network accessline 167
    - **Hardware capabilities, permissions, and access** : When checking hardware   capabilities, requesting permissions, or accessing glasses hardware, follow   [Check device capabilities at runtime](https://developer.android.com/develop/xr/je
  • Network accessline 167
    - **Hardware capabilities, permissions, and access** : When checking hardware   capabilities, requesting permissions, or accessing glasses hardware, follow   [Check device capabilities at runtime](https://developer.android.com/develop/xr/je
  • Network accessline 168
    capabilities, requesting permissions, or accessing glasses hardware, follow   [Check device capabilities at runtime](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/check-capabilities), [Request hardware   permissions](re
  • Network accessline 168
    capabilities, requesting permissions, or accessing glasses hardware, follow   [Check device capabilities at runtime](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/check-capabilities), [Request hardware   permissions](re
  • Network accessline 169
    [Check device capabilities at runtime](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/check-capabilities), [Request hardware
  • Network accessline 169
    [Check device capabilities at runtime](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/check-capabilities), [Request hardware
  • Network accessline 345
    - **Sizing and interactivity** : Size icons with `GlimmerTheme.iconSizes` (`small`, `medium`, `large`). Use `IconButton` or `IconToggleButton` for triggers and `Icon` for status indicators. - **Contrast and library** : **Never** use pure bl
  • Network accessline 345
    - **Sizing and interactivity** : Size icons with `GlimmerTheme.iconSizes` (`small`, `medium`, `large`). Use `IconButton` or `IconToggleButton` for triggers and `Icon` for status indicators. - **Contrast and library** : **Never** use pure bl
  • Network accessline 346
    - **Contrast and library** : **Never** use pure black (`Color.Black`) for icon tints; black renders as transparent. Use [Material Symbols](https://fonts.google.com/icons?icon.style=Rounded) (600 weight, Rounded, Unfilled). If `androidx.comp
  • Network accessline 346
    - **Contrast and library** : **Never** use pure black (`Color.Black`) for icon tints; black renders as transparent. Use [Material Symbols](https://fonts.google.com/icons?icon.style=Rounded) (600 weight, Rounded, Unfilled). If `androidx.comp
  • Network accessline 596
    - When handling notifications or starting a projected activity from a notification, follow the instructions in [Understand notification behavior   for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/n
  • Network accessline 596
    - When handling notifications or starting a projected activity from a notification, follow the instructions in [Understand notification behavior   for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/n
  • Network accessline 597
    for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/notifications/behavior) and [Start a glasses activity on display
  • Network accessline 597
    for intelligent eyewear](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/notifications/behavior) and [Start a glasses activity on display
  • Network accessline 598
    glasses from a notification](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/notifications/start-activity).
  • Network accessline 598
    glasses from a notification](https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/notifications/start-activity).

xr/display-glasses-with-jetpack-compose-glimmer/references/android/design/ui/ai-glasses/guides/interaction/inputs.md

  • Network accessline 29
    ![Design elements should be anchored to the bottom of the frame.](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_hardware.png)
  • Network accessline 29
    ![Design elements should be anchored to the bottom of the frame.](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_hardware.png)
  • Network accessline 30
    frame.](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_hardware.png)
  • Network accessline 30
    frame.](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_hardware.png)
  • Network accessline 66
    ![Design elements should be anchored to the bottom of the frame.](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_focus.png) On
  • Network accessline 66
    ![Design elements should be anchored to the bottom of the frame.](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_focus.png) On
  • Network accessline 67
    frame.](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_focus.png) On
  • Network accessline 67
    frame.](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_focus.png) On
  • Network accessline 77
    than complex and precise controls. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_complex_do.webp)
  • Network accessline 77
    than complex and precise controls. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_complex_do.webp)
  • Network accessline 79
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_complex_do.webp)
  • Network accessline 79
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_complex_do.webp)
  • Network accessline 83
    Design around fast gestures that don't feel out of place while a user is out and about. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_complex_dont.webp)
  • Network accessline 83
    Design around fast gestures that don't feel out of place while a user is out and about. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_complex_dont.webp)
  • Network accessline 91
    Limit the number of gestures that the user needs to remember, and take advantage of existing user mental models. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_recognition_do.webp)
  • Network accessline 91
    Limit the number of gestures that the user needs to remember, and take advantage of existing user mental models. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_recognition_do.webp)
  • Network accessline 93
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_recognition_do.webp)
  • Network accessline 93
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_recognition_do.webp)
  • Network accessline 97
    Provide UI elements for users to complete actions when the display is available. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_recognition_dont.webp)
  • Network accessline 97
    Provide UI elements for users to complete actions when the display is available. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_recognition_dont.webp)
  • Network accessline 125
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_error_do.webp)
  • Network accessline 125
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_error_do.webp)
  • Network accessline 129
    Put initial focus on a lower-cost action, like accepting a call. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_error_dont.webp)
  • Network accessline 129
    Put initial focus on a lower-cost action, like accepting a call. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_input_error_dont.webp)

xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md

  • Network accessline 1
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 1
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 2
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 2
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 6
    After you've [requested and been granted the necessary permissions](https://developer.android.com/develop/xr/jetpack-xr-sdk/request-hardware-permissions), your app
  • Network accessline 6
    After you've [requested and been granted the necessary permissions](https://developer.android.com/develop/xr/jetpack-xr-sdk/request-hardware-permissions), your app
  • Network accessline 7
    can access the hardware on the audio glasses or display glasses. The key to accessing the glasses' hardware (instead of the phone's hardware), is to use a [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/s
  • Network accessline 7
    can access the hardware on the audio glasses or display glasses. The key to accessing the glasses' hardware (instead of the phone's hardware), is to use a [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/s
  • Network accessline 9
    [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#projected-context).
  • Network accessline 9
    [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#projected-context).
  • Network accessline 16
    If your app's code is running from within your [projected activity](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#activity-lifecycle), its own
  • Network accessline 16
    If your app's code is running from within your [projected activity](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#activity-lifecycle), its own
  • Network accessline 17
    activity context is already a [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#projected-context). In this scenario, calls
  • Network accessline 17
    activity context is already a [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#projected-context). In this scenario, calls
  • Network accessline 23
    activity or a service) needs to access the glasses' hardware, it must explicitly obtain a projected context. To do this, use the [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/Projected
  • Network accessline 23
    activity or a service) needs to access the glasses' hardware, it must explicitly obtain a projected context. To do this, use the [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/Projected
  • Network accessline 25
    [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) method:
  • Network accessline 25
    [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) method:
  • Network accessline 63
    Wrap the [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) call within the
  • Network accessline 63
    Wrap the [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) call within the
  • Network accessline 64
    [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.content.Context,kotlin.coroutines.CoroutineContext)). While this method
  • Network accessline 64
    [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.content.Context,kotlin.coroutines.CoroutineContext)). While this method
  • Network accessline 71
    The projected context is tied to the lifecycle of the connected device, so it is destroyed when the device disconnects. When the device disconnects, [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kot
  • Network accessline 71
    The projected context is tied to the lifecycle of the connected device, so it is destroyed when the device disconnects. When the device disconnects, [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kot
  • Network accessline 72
    destroyed when the device disconnects. When the device disconnects, [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.con
  • Network accessline 72
    destroyed when the device disconnects. When the device disconnects, [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.con
  • Network accessline 73
    [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.content.Context,kotlin.coroutines.CoroutineContext)) returns `false`. Y
  • Network accessline 73
    [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.content.Context,kotlin.coroutines.CoroutineContext)) returns `false`. Y
  • Network accessline 80
    When the glasses reconnect, your app can obtain another projected context instance using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(and
  • Network accessline 80
    When the glasses reconnect, your app can obtain another projected context instance using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(and
  • Network accessline 81
    instance using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)), and then re-initialize any
  • Network accessline 81
    instance using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)), and then re-initialize any
  • Network accessline 95
    To record audio using Bluetooth HFP, first request the required runtime permissions, and then record the audio using the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API, as
  • Network accessline 95
    To record audio using Bluetooth HFP, first request the required runtime permissions, and then record the audio using the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API, as
  • Network accessline 96
    permissions, and then record the audio using the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API, as
  • Network accessline 96
    permissions, and then record the audio using the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API, as
  • Network accessline 101
    As with any standard Bluetooth audio device, the [`RECORD_AUDIO`](https://developer.android.com/reference/kotlin/android/Manifest.permission#record_audio),
  • Network accessline 101
    As with any standard Bluetooth audio device, the [`RECORD_AUDIO`](https://developer.android.com/reference/kotlin/android/Manifest.permission#record_audio),
  • Network accessline 102
    [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/kotlin/android/Manifest.permission#bluetooth_connect), and other related permissions are controlled by the
  • Network accessline 102
    [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/kotlin/android/Manifest.permission#bluetooth_connect), and other related permissions are controlled by the
  • Network accessline 107
    1. [Declare following permissions](https://developer.android.com/develop/xr/jetpack-xr-sdk/request-hardware-permissions#declare-permissions) in your app's manifest file:
  • Network accessline 107
    1. [Declare following permissions](https://developer.android.com/develop/xr/jetpack-xr-sdk/request-hardware-permissions#declare-permissions) in your app's manifest file:
  • Network accessline 109
    - [`RECORD_AUDIO`](https://developer.android.com/reference/kotlin/android/Manifest.permission#record_audio)
  • Network accessline 109
    - [`RECORD_AUDIO`](https://developer.android.com/reference/kotlin/android/Manifest.permission#record_audio)
  • Network accessline 110
    - [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/kotlin/android/Manifest.permission#bluetooth_connect)
  • Network accessline 110
    - [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/kotlin/android/Manifest.permission#bluetooth_connect)
  • Network accessline 111
    - [`MODIFY_AUDIO_SETTINGS`](https://developer.android.com/reference/kotlin/android/Manifest.permission#modify_audio_settings)
  • Network accessline 111
    - [`MODIFY_AUDIO_SETTINGS`](https://developer.android.com/reference/kotlin/android/Manifest.permission#modify_audio_settings)
  • Network accessline 113
    runtime using the [standard Android permission flow](https://developer.android.com/training/permissions/requesting).
  • Network accessline 113
    runtime using the [standard Android permission flow](https://developer.android.com/training/permissions/requesting).
  • Network accessline 117
    After the user has granted your app the necessary runtime permissions, use the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API to set the communication device to
  • Network accessline 117
    After the user has granted your app the necessary runtime permissions, use the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API to set the communication device to
  • Network accessline 118
    [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API to set the communication device to
  • Network accessline 118
    [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API to set the communication device to
  • Network accessline 119
    [`TYPE_BLUETOOTH_SCO`](https://developer.android.com/reference/kotlin/android/media/AudioDeviceInfo#type_bluetooth_sco) to route the audio through Bluetooth HFP. This
  • Network accessline 119
    [`TYPE_BLUETOOTH_SCO`](https://developer.android.com/reference/kotlin/android/media/AudioDeviceInfo#type_bluetooth_sco) to route the audio through Bluetooth HFP. This
  • Network accessline 144
    > [!NOTE] > **Note:** To learn more about Bluetooth connectivity, refer to our [documentation](https://developer.android.com/develop/connectivity/bluetooth).
  • Network accessline 144
    > [!NOTE] > **Note:** To learn more about Bluetooth connectivity, refer to our [documentation](https://developer.android.com/develop/connectivity/bluetooth).
  • Network accessline 145
    > **Note:** To learn more about Bluetooth connectivity, refer to our [documentation](https://developer.android.com/develop/connectivity/bluetooth).
  • Network accessline 145
    > **Note:** To learn more about Bluetooth connectivity, refer to our [documentation](https://developer.android.com/develop/connectivity/bluetooth).
  • Network accessline 149
    To capture an image with the glasses' camera, set up and bind the CameraX's [`ImageCapture`](https://developer.android.com/reference/kotlin/androidx/camera/core/ImageCapture) [use case](https://developer.android.com/media/camera/camerax#eas
  • Network accessline 149
    To capture an image with the glasses' camera, set up and bind the CameraX's [`ImageCapture`](https://developer.android.com/reference/kotlin/androidx/camera/core/ImageCapture) [use case](https://developer.android.com/media/camera/camerax#eas
  • Network accessline 150
    [`ImageCapture`](https://developer.android.com/reference/kotlin/androidx/camera/core/ImageCapture) [use case](https://developer.android.com/media/camera/camerax#ease-of-use) to the glasses' camera using the correct
  • Network accessline 150
    [`ImageCapture`](https://developer.android.com/reference/kotlin/androidx/camera/core/ImageCapture) [use case](https://developer.android.com/media/camera/camerax#ease-of-use) to the glasses' camera using the correct
  • Network accessline 236
    - Obtains an instance of the [`ProcessCameraProvider`](https://developer.android.com/reference/kotlin/androidx/camera/lifecycle/ProcessCameraProvider) using the [**projected device context**](https://developer.android.com/develop/xr/jetpack
  • Network accessline 236
    - Obtains an instance of the [`ProcessCameraProvider`](https://developer.android.com/reference/kotlin/androidx/camera/lifecycle/ProcessCameraProvider) using the [**projected device context**](https://developer.android.com/develop/xr/jetpack
  • Network accessline 237
    - Within the projected context's scope, the glasses' primary, outward-pointing camera maps to the `DEFAULT_BACK_CAMERA` when selecting a camera. - A pre-binding check uses [`cameraProvider.hasCamera(cameraSelector)`](https://developer.andro
  • Network accessline 237
    - Within the projected context's scope, the glasses' primary, outward-pointing camera maps to the `DEFAULT_BACK_CAMERA` when selecting a camera. - A pre-binding check uses [`cameraProvider.hasCamera(cameraSelector)`](https://developer.andro
  • Network accessline 238
    - A pre-binding check uses [`cameraProvider.hasCamera(cameraSelector)`](https://developer.android.com/reference/kotlin/androidx/camera/lifecycle/ProcessCameraProvider#hasCamera(androidx.camera.core.CameraSelector)) to verify that the select
  • Network accessline 238
    - A pre-binding check uses [`cameraProvider.hasCamera(cameraSelector)`](https://developer.android.com/reference/kotlin/androidx/camera/lifecycle/ProcessCameraProvider#hasCamera(androidx.camera.core.CameraSelector)) to verify that the select
  • Network accessline 239
    - Uses **Camera2 Interop** with [`Camera2CameraInfo`](https://developer.android.com/reference/kotlin/androidx/camera/camera2/interop/Camera2CameraInfo) to read the underlying [`CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP`](https:/
  • Network accessline 239
    - Uses **Camera2 Interop** with [`Camera2CameraInfo`](https://developer.android.com/reference/kotlin/androidx/camera/camera2/interop/Camera2CameraInfo) to read the underlying [`CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP`](https:/
  • Network accessline 240
    - A custom [`ResolutionSelector`](https://developer.android.com/reference/kotlin/androidx/camera/core/resolutionselector/ResolutionSelector) is built to precisely control the output image resolution for [`ImageCapture`](https://developer.an
  • Network accessline 240
    - A custom [`ResolutionSelector`](https://developer.android.com/reference/kotlin/androidx/camera/core/resolutionselector/ResolutionSelector) is built to precisely control the output image resolution for [`ImageCapture`](https://developer.an
  • Network accessline 241
    - Creates an `ImageCapture` use case that is configured with a custom `ResolutionSelector`. - Binds the `ImageCapture` use case to the activity's lifecycle. This automatically manages the opening and closing of the camera based on the activ
  • Network accessline 241
    - Creates an `ImageCapture` use case that is configured with a custom `ResolutionSelector`. - Binds the `ImageCapture` use case to the activity's lifecycle. This automatically manages the opening and closing of the camera based on the activ
  • Network accessline 243
    - **Configuring for single-stream hardware:** The glasses camera pipeline is constrained to a single active stream at a time. When `ImageCapture` is bound alone, CameraX attaches an internal repeating stream (`MeteringRepeating`) for focus 
  • Network accessline 243
    - **Configuring for single-stream hardware:** The glasses camera pipeline is constrained to a single active stream at a time. When `ImageCapture` is bound alone, CameraX attaches an internal repeating stream (`MeteringRepeating`) for focus 
  • Network accessline 245
    After the glasses' camera is set up, you can capture an image with the CameraX's `ImageCapture` class. Refer to the CameraX's documentation to learn about using [`takePicture`](https://developer.android.com/media/camera/camerax/take-photo#t
  • Network accessline 245
    After the glasses' camera is set up, you can capture an image with the CameraX's `ImageCapture` class. Refer to the CameraX's documentation to learn about using [`takePicture`](https://developer.android.com/media/camera/camerax/take-photo#t
  • Network accessline 247
    [`takePicture`](https://developer.android.com/media/camera/camerax/take-photo#take_a_picture) to [capture an image](https://developer.android.com/media/camera/camerax/take-photo#take_a_picture).
  • Network accessline 247
    [`takePicture`](https://developer.android.com/media/camera/camerax/take-photo#take_a_picture) to [capture an image](https://developer.android.com/media/camera/camerax/take-photo#take_a_picture).
  • Network accessline 251
    To capture a video instead of an image with the glasses' camera, replace the `ImageCapture` components with the corresponding [`VideoCapture`](https://developer.android.com/reference/kotlin/androidx/camera/video/VideoCapture) components
  • Network accessline 251
    To capture a video instead of an image with the glasses' camera, replace the `ImageCapture` components with the corresponding [`VideoCapture`](https://developer.android.com/reference/kotlin/androidx/camera/video/VideoCapture) components
  • Network accessline 252
    `ImageCapture` components with the corresponding [`VideoCapture`](https://developer.android.com/reference/kotlin/androidx/camera/video/VideoCapture) components
  • Network accessline 252
    `ImageCapture` components with the corresponding [`VideoCapture`](https://developer.android.com/reference/kotlin/androidx/camera/video/VideoCapture) components
  • Network accessline 256
    file, and initiating the capture using the appropriate video recording method. For more information about the `VideoCapture` API and how to use it, see the [CameraX's video capture documentation](https://developer.android.com/media/camera/c
  • Network accessline 256
    file, and initiating the capture using the appropriate video recording method. For more information about the `VideoCapture` API and how to use it, see the [CameraX's video capture documentation](https://developer.android.com/media/camera/c
  • Network accessline 258
    [CameraX's video capture documentation](https://developer.android.com/media/camera/camerax/video-capture#using-videocapture-api).
  • Network accessline 258
    [CameraX's video capture documentation](https://developer.android.com/media/camera/camerax/video-capture#using-videocapture-api).
  • Network accessline 274
    An [projected activity](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#activity-lifecycle) can also access the phone's hardware (such as the
  • Network accessline 274
    An [projected activity](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#activity-lifecycle) can also access the phone's hardware (such as the
  • Network accessline 275
    camera or microphone) by using [`createHostDeviceContext(context)`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createHostDeviceContext(android.content.Context)) to get
  • Network accessline 275
    camera or microphone) by using [`createHostDeviceContext(context)`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createHostDeviceContext(android.content.Context)) to get
  • Network accessline 299
    - Use the [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity) context from the phone `Activity` or the [`ProjectedContext.createHostDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/pro
  • Network accessline 299
    - Use the [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity) context from the phone `Activity` or the [`ProjectedContext.createHostDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/pro
  • Network accessline 300
    - Don't use [`getApplicationContext`](https://developer.android.com/reference/kotlin/android/content/Context#getapplicationcontext) because the application context can incorrectly return the glasses' context if a projected activity was the 
  • Network accessline 300
    - Don't use [`getApplicationContext`](https://developer.android.com/reference/kotlin/android/content/Context#getapplicationcontext) because the application context can incorrectly return the glasses' context if a projected activity was the 

xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/buttons.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 8
    In Jetpack Compose Glimmer, a [`Button`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Button.composable) is an interactive component that's
  • Network accessline 8
    In Jetpack Compose Glimmer, a [`Button`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Button.composable) is an interactive component that's
  • Network accessline 12
    Buttons are built on the Jetpack Compose Glimmer [surface system](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/surface), which
  • Network accessline 12
    Buttons are built on the Jetpack Compose Glimmer [surface system](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/surface), which
  • Network accessline 15
    The standard button contains a text label and optional icons. You can use it for primary or secondary actions. There are also specialized buttons, such as [icon buttons](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compos
  • Network accessline 15
    The standard button contains a text label and optional icons. You can use it for primary or secondary actions. There are also specialized buttons, such as [icon buttons](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compos
  • Network accessline 16
    primary or secondary actions. There are also specialized buttons, such as [icon buttons](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icon-buttons) and [toggle buttons](https://developer.android.com/develo
  • Network accessline 16
    primary or secondary actions. There are also specialized buttons, such as [icon buttons](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icon-buttons) and [toggle buttons](https://developer.android.com/develo
  • Network accessline 17
    buttons](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icon-buttons) and [toggle buttons](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/toggle-buttons), which are defined a
  • Network accessline 17
    buttons](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icon-buttons) and [toggle buttons](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/toggle-buttons), which are defined a
  • Network accessline 22
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_buttons_anatomy_default.png) An example of some different styles of buttons in Jetpack Compose Glimmer. These examples show default, medium-sized bu
  • Network accessline 22
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_buttons_anatomy_default.png) An example of some different styles of buttons in Jetpack Compose Glimmer. These examples show default, medium-sized bu
  • Network accessline 26
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_buttons_large.png) An example of some different styles of buttons in Jetpack Compose Glimmer. These examples show large-sized buttons with three but
  • Network accessline 26
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_buttons_large.png) An example of some different styles of buttons in Jetpack Compose Glimmer. These examples show large-sized buttons with three but
  • Network accessline 54
    - **Enabled**: The default state for an interactive button. - **Focused** : When focused, the button applies a [`GlimmerTheme.depthEffectLevels.level1`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/DepthEffectLevels#le
  • Network accessline 54
    - **Enabled**: The default state for an interactive button. - **Focused** : When focused, the button applies a [`GlimmerTheme.depthEffectLevels.level1`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/DepthEffectLevels#le
  • Network accessline 55
    - **Focused** : When focused, the button applies a [`GlimmerTheme.depthEffectLevels.level1`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/DepthEffectLevels#level1()) and a focused border highlight.
  • Network accessline 55
    - **Focused** : When focused, the button applies a [`GlimmerTheme.depthEffectLevels.level1`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/DepthEffectLevels#level1()) and a focused border highlight.
  • Network accessline 63
    - By default, buttons use [`GlimmerTheme.typography.bodySmall`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#bodySmall()). Make sure that text within buttons is concise and clearly describes the action.
  • Network accessline 63
    - By default, buttons use [`GlimmerTheme.typography.bodySmall`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#bodySmall()). Make sure that text within buttons is concise and clearly describes the action.
  • Network accessline 64
    - The default shape for a button is [`GlimmerTheme.shapes.large`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Shapes#large()). This consistent rounding helps users identify buttons across the display glasses interface
  • Network accessline 64
    - The default shape for a button is [`GlimmerTheme.shapes.large`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Shapes#large()). This consistent rounding helps users identify buttons across the display glasses interface
  • Network accessline 66
    > [!NOTE] > **Note:** Any modifier passed to the `Button` composable is applied to the outer layout. While [`ButtonSize`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonSize) sets the default minimum height, you ca
  • Network accessline 66
    > [!NOTE] > **Note:** Any modifier passed to the `Button` composable is applied to the outer layout. While [`ButtonSize`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonSize) sets the default minimum height, you ca
  • Network accessline 67
    > **Note:** Any modifier passed to the `Button` composable is applied to the outer layout. While [`ButtonSize`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonSize) sets the default minimum height, you can also app
  • Network accessline 67
    > **Note:** Any modifier passed to the `Button` composable is applied to the outer layout. While [`ButtonSize`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonSize) sets the default minimum height, you can also app
  • Network accessline 92
    The [`ButtonGroup`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonGroup.composable) composable lets you group buttons into a scrollable row
  • Network accessline 92
    The [`ButtonGroup`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonGroup.composable) composable lets you group buttons into a scrollable row
  • Network accessline 93
    that acts as a focus controller. As the user scrolls, focus automatically moves to highlight the button corresponding to the current scroll position. ![](https://developer.android.com/static/images/xr/button-group-scroll.gif) An example of 
  • Network accessline 93
    that acts as a focus controller. As the user scrolls, focus automatically moves to highlight the button corresponding to the current scroll position. ![](https://developer.android.com/static/images/xr/button-group-scroll.gif) An example of 
  • Network accessline 95
    ![](https://developer.android.com/static/images/xr/button-group-scroll.gif) An example of a button group scrolling and focusing features.
  • Network accessline 95
    ![](https://developer.android.com/static/images/xr/button-group-scroll.gif) An example of a button group scrolling and focusing features.
  • Network accessline 119
    1. Declare the state with `rememberButtonGroupState`. 2. Pass it to the `ButtonGroup` composable. 3. Call [`animateScrollToItem`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonGroupState#animateScrollToItem(kotlin
  • Network accessline 119
    1. Declare the state with `rememberButtonGroupState`. 2. Pass it to the `ButtonGroup` composable. 3. Call [`animateScrollToItem`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonGroupState#animateScrollToItem(kotlin
  • Network accessline 121
    3. Call [`animateScrollToItem`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonGroupState#animateScrollToItem(kotlin.Int,androidx.compose.animation.core.FiniteAnimationSpec)) (or [`scrollToItem`](https://developer.
  • Network accessline 121
    3. Call [`animateScrollToItem`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonGroupState#animateScrollToItem(kotlin.Int,androidx.compose.animation.core.FiniteAnimationSpec)) (or [`scrollToItem`](https://developer.
  • Network accessline 143
    In Jetpack Compose Glimmer, components are [designed and optimized for transparent displays](https://developer.android.com/design/ui/ai-glasses/guides/foundations/made-for-glasses#transparent-first), so they rely primarily on subtle translu
  • Network accessline 143
    In Jetpack Compose Glimmer, components are [designed and optimized for transparent displays](https://developer.android.com/design/ui/ai-glasses/guides/foundations/made-for-glasses#transparent-first), so they rely primarily on subtle translu
  • Network accessline 144
    transparent displays](https://developer.android.com/design/ui/ai-glasses/guides/foundations/made-for-glasses#transparent-first), so they rely primarily on subtle translucent
  • Network accessline 144
    transparent displays](https://developer.android.com/design/ui/ai-glasses/guides/foundations/made-for-glasses#transparent-first), so they rely primarily on subtle translucent
  • Network accessline 146
    against the real world. Because resting states favor neutral tones to avoid both visual fatigue and obstructing the user's field of view, the [`focusedColor`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonDefaults
  • Network accessline 146
    against the real world. Because resting states favor neutral tones to avoid both visual fatigue and obstructing the user's field of view, the [`focusedColor`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonDefaults
  • Network accessline 147
    visual fatigue and obstructing the user's field of view, the [`focusedColor`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonDefaults#focusedColor(androidx.compose.ui.graphics.Color)) parameter on [`Button`](https:
  • Network accessline 147
    visual fatigue and obstructing the user's field of view, the [`focusedColor`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonDefaults#focusedColor(androidx.compose.ui.graphics.Color)) parameter on [`Button`](https:
  • Network accessline 148
    [`focusedColor`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonDefaults#focusedColor(androidx.compose.ui.graphics.Color)) parameter on [`Button`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/
  • Network accessline 148
    [`focusedColor`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ButtonDefaults#focusedColor(androidx.compose.ui.graphics.Color)) parameter on [`Button`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/

xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/cards.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 8
    In Jetpack Compose Glimmer, the [`Card`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable) component serves as the primary
  • Network accessline 8
    In Jetpack Compose Glimmer, the [`Card`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable) component serves as the primary
  • Network accessline 16
    Cards are built on the Jetpack Compose Glimmer [surface system](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/surface), so they
  • Network accessline 16
    Cards are built on the Jetpack Compose Glimmer [surface system](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/surface), so they
  • Network accessline 17
    inherit physical properties like depth effects, clipping, and consistent border highlights. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_cards.png) **Figure 1.** An example of some different st
  • Network accessline 17
    inherit physical properties like depth effects, clipping, and consistent border highlights. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_cards.png) **Figure 1.** An example of some different st
  • Network accessline 19
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_cards.png) **Figure 1.** An example of some different styles of cards in Jetpack Compose Glimmer.
  • Network accessline 19
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_cards.png) **Figure 1.** An example of some different styles of cards in Jetpack Compose Glimmer.
  • Network accessline 28
    | Header | The top section of the card, designed to hold an image. | | Title and subtitle | These text fields provide the main and secondary labels for the card. The title is placed above the subtitle. | | Leading icon | An optional icon (t
  • Network accessline 28
    | Header | The top section of the card, designed to hold an image. | | Title and subtitle | These text fields provide the main and secondary labels for the card. The title is placed above the subtitle. | | Leading icon | An optional icon (t
  • Network accessline 29
    | Title and subtitle | These text fields provide the main and secondary labels for the card. The title is placed above the subtitle. | | Leading icon | An optional icon (typically an [`Icon`](https://developer.android.com/reference/kotlin/a
  • Network accessline 29
    | Title and subtitle | These text fields provide the main and secondary labels for the card. The title is placed above the subtitle. | | Leading icon | An optional icon (typically an [`Icon`](https://developer.android.com/reference/kotlin/a
  • Network accessline 30
    | Leading icon | An optional icon (typically an [`Icon`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Icon.composable)) that appears at the beginning of the card's content area. |
  • Network accessline 30
    | Leading icon | An optional icon (typically an [`Icon`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Icon.composable)) that appears at the beginning of the card's content area. |
  • Network accessline 32
    | Main content | The core body of the card for primary [`Text`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Text.composable) or content. |
  • Network accessline 32
    | Main content | The core body of the card for primary [`Text`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Text.composable) or content. |
  • Network accessline 39
    - **Minimum height** : `80.dp` - **Text vertical spacing** : `3.dp` - **Header shape** : Uses [`RoundedCornerShape`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/shape/package-summary#RoundedCornerShape(android
  • Network accessline 39
    - **Minimum height** : `80.dp` - **Text vertical spacing** : `3.dp` - **Header shape** : Uses [`RoundedCornerShape`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/shape/package-summary#RoundedCornerShape(android
  • Network accessline 40
    - **Text vertical spacing** : `3.dp` - **Header shape** : Uses [`RoundedCornerShape`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/shape/package-summary#RoundedCornerShape(androidx.compose.ui.unit.Dp)) with `24
  • Network accessline 40
    - **Text vertical spacing** : `3.dp` - **Header shape** : Uses [`RoundedCornerShape`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/shape/package-summary#RoundedCornerShape(androidx.compose.ui.unit.Dp)) with `24
  • Network accessline 41
    - **Header shape** : Uses [`RoundedCornerShape`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/shape/package-summary#RoundedCornerShape(androidx.compose.ui.unit.Dp)) with `24.dp` corners
  • Network accessline 41
    - **Header shape** : Uses [`RoundedCornerShape`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/shape/package-summary#RoundedCornerShape(androidx.compose.ui.unit.Dp)) with `24.dp` corners
  • Network accessline 42
    - **Content padding** : Defaults to [`GlimmerTheme.componentSpacingValues.medium`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ComponentSpacingValues#medium()). This affects the outermost padding around header images 
  • Network accessline 42
    - **Content padding** : Defaults to [`GlimmerTheme.componentSpacingValues.medium`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ComponentSpacingValues#medium()). This affects the outermost padding around header images 
  • Network accessline 43
    - **Shape** : Defaults to [`GlimmerTheme.shapes.medium`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Shapes#medium()).
  • Network accessline 43
    - **Shape** : Defaults to [`GlimmerTheme.shapes.medium`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Shapes#medium()).
  • Network accessline 45
    [`GlimmerTheme.typography`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/GlimmerTheme#typography()) for the following slots:
  • Network accessline 45
    [`GlimmerTheme.typography`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/GlimmerTheme#typography()) for the following slots:
  • Network accessline 47
    - Title: [`bodyMedium`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#bodyMedium())
  • Network accessline 47
    - Title: [`bodyMedium`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#bodyMedium())
  • Network accessline 48
    - Subtitle: [`caption`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#caption())
  • Network accessline 48
    - Subtitle: [`caption`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#caption())
  • Network accessline 49
    - Main content: [`bodySmall`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#bodySmall())
  • Network accessline 49
    - Main content: [`bodySmall`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#bodySmall())
  • Network accessline 82
    - Shows how to use various card elements, such as [`title`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable), [`subtitle`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable
  • Network accessline 82
    - Shows how to use various card elements, such as [`title`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable), [`subtitle`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable
  • Network accessline 83
    - Uses the [`Card`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable#Card(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function0,kotlin.Function0,kotlin.Function0,kotlin.Function0,a
  • Network accessline 83
    - Uses the [`Card`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable#Card(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function0,kotlin.Function0,kotlin.Function0,kotlin.Function0,a
  • Network accessline 87
    If you want to include an action button with a card, use an [`ActionCard`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ActionCard.composable). Action cards have the same elements as standard cards and
  • Network accessline 87
    If you want to include an action button with a card, use an [`ActionCard`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ActionCard.composable). Action cards have the same elements as standard cards and
  • Network accessline 88
    [`ActionCard`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ActionCard.composable). Action cards have the same elements as standard cards and
  • Network accessline 88
    [`ActionCard`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/ActionCard.composable). Action cards have the same elements as standard cards and
  • Network accessline 90
    ![](https://developer.android.com/static/images/design/ui/xr/guides/actioncard.png) **Figure 2.** An example of an `ActionCard` in Jetpack Compose Glimmer.
  • Network accessline 90
    ![](https://developer.android.com/static/images/design/ui/xr/guides/actioncard.png) **Figure 2.** An example of an `ActionCard` in Jetpack Compose Glimmer.

xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/focus.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 15
    components to promote a consistent experience. However, for custom components or bespoke interaction behaviors, you can use existing Compose APIs like [`Modifier.draggable`](https://developer.android.com/reference/kotlin/androidx/compose/ui
  • Network accessline 15
    components to promote a consistent experience. However, for custom components or bespoke interaction behaviors, you can use existing Compose APIs like [`Modifier.draggable`](https://developer.android.com/reference/kotlin/androidx/compose/ui
  • Network accessline 17
    [`Modifier.draggable`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).draggable(androidx.compose.foundation.gestures.DraggableState,androidx.compose.foundation.gestures.Orientation
  • Network accessline 17
    [`Modifier.draggable`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).draggable(androidx.compose.foundation.gestures.DraggableState,androidx.compose.foundation.gestures.Orientation
  • Network accessline 37
    > This feature is still in development and isn't enabled by default. To activate > this feature, set the `isInitialFocusOnFocusableAvailable` flag to `true` in > your activity's [`onCreate()`](https://developer.android.com/reference/kotlin/
  • Network accessline 37
    > This feature is still in development and isn't enabled by default. To activate > this feature, set the `isInitialFocusOnFocusableAvailable` flag to `true` in > your activity's [`onCreate()`](https://developer.android.com/reference/kotlin/
  • Network accessline 38
    > this feature, set the `isInitialFocusOnFocusableAvailable` flag to `true` in > your activity's [`onCreate()`](https://developer.android.com/reference/kotlin/android/app/Activity#onCreate(android.os.Bundle)) method. >
  • Network accessline 38
    > this feature, set the `isInitialFocusOnFocusableAvailable` flag to `true` in > your activity's [`onCreate()`](https://developer.android.com/reference/kotlin/android/app/Activity#onCreate(android.os.Bundle)) method. >
  • Network accessline 39
    > your activity's [`onCreate()`](https://developer.android.com/reference/kotlin/android/app/Activity#onCreate(android.os.Bundle)) method.
  • Network accessline 39
    > your activity's [`onCreate()`](https://developer.android.com/reference/kotlin/android/app/Activity#onCreate(android.os.Bundle)) method.
  • Network accessline 68
    Just like in Jetpack Compose, Jetpack Compose Glimmer uses one-dimensional focus search. To learn more about the order of focus traversal, see [Change focus traversal order](https://developer.android.com/develop/ui/compose/touch-input/focus
  • Network accessline 68
    Just like in Jetpack Compose, Jetpack Compose Glimmer uses one-dimensional focus search. To learn more about the order of focus traversal, see [Change focus traversal order](https://developer.android.com/develop/ui/compose/touch-input/focus
  • Network accessline 70
    traversal order](https://developer.android.com/develop/ui/compose/touch-input/focus/change-focus-traversal-order#override-one-dimensional).
  • Network accessline 70
    traversal order](https://developer.android.com/develop/ui/compose/touch-input/focus/change-focus-traversal-order#override-one-dimensional).
  • Network accessline 72
    To change the initially-focused item, you can add a top-level [`Modifier.focusGroup()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).focusGroup()) and specify a custom `onEnter`
  • Network accessline 72
    To change the initially-focused item, you can add a top-level [`Modifier.focusGroup()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).focusGroup()) and specify a custom `onEnter`
  • Network accessline 73
    [`Modifier.focusGroup()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).focusGroup()) and specify a custom `onEnter`
  • Network accessline 73
    [`Modifier.focusGroup()`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).focusGroup()) and specify a custom `onEnter`
  • Network accessline 74
    [`focusProperty`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).focusProperties(kotlin.Function1)):
  • Network accessline 74
    [`focusProperty`](https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier#(androidx.compose.ui.Modifier).focusProperties(kotlin.Function1)):
  • Network accessline 95
    components, including surfaces, cards, and list items, promoting consistent and clear visual feedback during user interaction. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_focus.png) **Figure 1
  • Network accessline 95
    components, including surfaces, cards, and list items, promoting consistent and clear visual feedback during user interaction. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_focus.png) **Figure 1
  • Network accessline 97
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_focus.png) **Figure 1.** Three focus states in Jetpack Compose Glimmer, which are differentiated using outline-based visual feedback.
  • Network accessline 97
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_ixd_inputs_focus.png) **Figure 1.** Three focus states in Jetpack Compose Glimmer, which are differentiated using outline-based visual feedback.
  • Network accessline 99
    - **Default** : The button's background color is derived from   [`GlimmerTheme.colors.surface`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Colors#surface()), its main content calculates the content
  • Network accessline 99
    - **Default** : The button's background color is derived from   [`GlimmerTheme.colors.surface`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Colors#surface()), its main content calculates the content
  • Network accessline 100
    [`GlimmerTheme.colors.surface`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Colors#surface()), its main content calculates the content
  • Network accessline 100
    [`GlimmerTheme.colors.surface`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Colors#surface()), its main content calculates the content

xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icons.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 8
    In Jetpack Compose Glimmer, the [`Icon`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Icon.composable) component is a UI element for
  • Network accessline 8
    In Jetpack Compose Glimmer, the [`Icon`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Icon.composable) component is a UI element for
  • Network accessline 10
    that they remain legible and visually consistent with the [`GlimmerTheme`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/GlimmerTheme.composable).
  • Network accessline 10
    that they remain legible and visually consistent with the [`GlimmerTheme`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/GlimmerTheme.composable).
  • Network accessline 14
    While icons default to the size provided by [`LocalIconSize`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/package-summary#LocalIconSize()), you can also
  • Network accessline 14
    While icons default to the size provided by [`LocalIconSize`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/package-summary#LocalIconSize()), you can also
  • Network accessline 26
    Icons can accept [`ImageVector`](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector), [`ImageBitmap`](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap), or [
  • Network accessline 26
    Icons can accept [`ImageVector`](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/vector/ImageVector), [`ImageBitmap`](https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/ImageBitmap), or [
  • Network accessline 32
    - **Automatic tint** : The icon resolves its color based on the `LocalContentColor` provided by the parent surface `LocalContentColor` provided by the parent surface, such as a [`surface`](https://developer.android.com/reference/kotlin/andr
  • Network accessline 32
    - **Automatic tint** : The icon resolves its color based on the `LocalContentColor` provided by the parent surface `LocalContentColor` provided by the parent surface, such as a [`surface`](https://developer.android.com/reference/kotlin/andr
  • Network accessline 33
    - **Manual Tinting** : Use the `tint` parameter to apply a specific color. - **Multicolored Assets** : For icons that should not be tinted (like multicolored brand logos), set `tint = Color.Unspecified`. - **Generic Images** : For photograp
  • Network accessline 33
    - **Manual Tinting** : Use the `tint` parameter to apply a specific color. - **Multicolored Assets** : For icons that should not be tinted (like multicolored brand logos), set `tint = Color.Unspecified`. - **Generic Images** : For photograp
  • Network accessline 35
    - **Generic Images** : For photographs or generic images that don't follow icon sizing and tinting rules, use the standard [`androidx.compose.foundation.Image`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/Imag
  • Network accessline 35
    - **Generic Images** : For photographs or generic images that don't follow icon sizing and tinting rules, use the standard [`androidx.compose.foundation.Image`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/Imag
  • Network accessline 89
    - The icon's size is customized using [`GlimmerTheme.iconSizes`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/IconSizes) with a modifier. For icons, the default value is [`GlimmerTheme.iconSizes.medium`](https://develo
  • Network accessline 89
    - The icon's size is customized using [`GlimmerTheme.iconSizes`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/IconSizes) with a modifier. For icons, the default value is [`GlimmerTheme.iconSizes.medium`](https://develo

xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/text.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 8
    In Jetpack Compose Glimmer, the [`Text`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Text.composable) component lets you set various text
  • Network accessline 8
    In Jetpack Compose Glimmer, the [`Text`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Text.composable) component lets you set various text
  • Network accessline 53
    [Google Sans Flex](https://fonts.google.com/specimen/Google+Sans+Flex?query=google+sans&preview.script=Latn) is a variable font specifically chosen for AI
  • Network accessline 53
    [Google Sans Flex](https://fonts.google.com/specimen/Google+Sans+Flex?query=google+sans&preview.script=Latn) is a variable font specifically chosen for AI
  • Network accessline 60
    To use Google Sans Flex, [add the `glimmer-google-fonts` library to your app's dependencies](https://developer.android.com/develop/xr/jetpack-xr-sdk/set-up-sdk#augmented), then apply the font globally to the `GlimmerTheme`:
  • Network accessline 60
    To use Google Sans Flex, [add the `glimmer-google-fonts` library to your app's dependencies](https://developer.android.com/develop/xr/jetpack-xr-sdk/set-up-sdk#augmented), then apply the font globally to the `GlimmerTheme`:
  • Network accessline 61
    dependencies](https://developer.android.com/develop/xr/jetpack-xr-sdk/set-up-sdk#augmented), then apply the font globally to the `GlimmerTheme`:
  • Network accessline 61
    dependencies](https://developer.android.com/develop/xr/jetpack-xr-sdk/set-up-sdk#augmented), then apply the font globally to the `GlimmerTheme`:

xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/title-chips.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 8
    In Jetpack Compose Glimmer, the [`TitleChip`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/TitleChip.composable) component is a non-interactive
  • Network accessline 8
    In Jetpack Compose Glimmer, the [`TitleChip`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/TitleChip.composable) component is a non-interactive
  • Network accessline 10
    as a [`Card`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable) or a [`VerticalList`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/list/VerticalList.composable).
  • Network accessline 10
    as a [`Card`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Card.composable) or a [`VerticalList`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/list/VerticalList.composable).
  • Network accessline 13
    a status indicator. Normally, you should place title chips above the content they describe to establish a clear structural relationship. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_titlechip_a
  • Network accessline 13
    a status indicator. Normally, you should place title chips above the content they describe to establish a clear structural relationship. ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_titlechip_a
  • Network accessline 15
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_titlechip_anatomy.png) **Figure 1.** An example of a default style title chip and sticky title chip in Jetpack Compose Glimmer. Each title chip has 
  • Network accessline 15
    ![](https://developer.android.com/static/images/design/ui/glasses/guides/glasses_components_titlechip_anatomy.png) **Figure 1.** An example of a default style title chip and sticky title chip in Jetpack Compose Glimmer. Each title chip has 
  • Network accessline 50
    To use a title chip with another component, place the title chip [`TitleChipDefaults.associatedContentSpacing`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/TitleChipDefaults#associatedContentSpacing()) above the other
  • Network accessline 50
    To use a title chip with another component, place the title chip [`TitleChipDefaults.associatedContentSpacing`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/TitleChipDefaults#associatedContentSpacing()) above the other
  • Network accessline 51
    [`TitleChipDefaults.associatedContentSpacing`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/TitleChipDefaults#associatedContentSpacing()) above the other component in
  • Network accessline 51
    [`TitleChipDefaults.associatedContentSpacing`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/TitleChipDefaults#associatedContentSpacing()) above the other component in
  • Network accessline 78
    - The title chip is centered horizontally, which is the usual alignment for a title chip placed above a card. - The [`Spacer`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Spacer.composable#Spacer(androi
  • Network accessline 78
    - The title chip is centered horizontally, which is the usual alignment for a title chip placed above a card. - The [`Spacer`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Spacer.composable#Spacer(androi
  • Network accessline 79
    - The [`Spacer`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Spacer.composable#Spacer(androidx.compose.ui.Modifier)) has a fixed height to provide the right amount of vertical spacing between the two co
  • Network accessline 79
    - The [`Spacer`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/Spacer.composable#Spacer(androidx.compose.ui.Modifier)) has a fixed height to provide the right amount of vertical spacing between the two co
  • Network accessline 80
    - Uses an optional `leadingIcon` to add additional visual context before the text content. - The title chip automatically uses the [`caption`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#caption()) style fo
  • Network accessline 80
    - Uses an optional `leadingIcon` to add additional visual context before the text content. - The title chip automatically uses the [`caption`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#caption()) style fo
  • Network accessline 81
    - The title chip automatically uses the [`caption`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#caption()) style for its text.
  • Network accessline 81
    - The title chip automatically uses the [`caption`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Typography#caption()) style for its text.
  • Network accessline 82
    - The title chip isn't interactive. If you need a clickable label, use a [`Button`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Button.composable) or another interactive component.
  • Network accessline 82
    - The title chip isn't interactive. If you need a clickable label, use a [`Button`](https://developer.android.com/reference/kotlin/androidx/xr/glimmer/Button.composable) or another interactive component.

xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/request-hardware-permissions.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 5
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 5
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 17
    Before requesting permissions, you must [declare them in your app's manifest](https://developer.android.com/training/permissions/declaring)
  • Network accessline 17
    Before requesting permissions, you must [declare them in your app's manifest](https://developer.android.com/training/permissions/declaring)
  • Network accessline 18
    file using the [`<uses-permission>`](https://developer.android.com/guide/topics/manifest/uses-permission-element) element. This declaration remains the
  • Network accessline 18
    file using the [`<uses-permission>`](https://developer.android.com/guide/topics/manifest/uses-permission-element) element. This declaration remains the
  • Network accessline 34
    Review the [permission principles and workflows](https://developer.android.com/training/permissions/requesting#principles) to make sure you provide the
  • Network accessline 34
    Review the [permission principles and workflows](https://developer.android.com/training/permissions/requesting#principles) to make sure you provide the
  • Network accessline 35
    best experience for your users, like [checking whether the user has already granted the runtime permissions](https://developer.android.com/training/permissions/requesting#already-granted) your app requires and [whether your app should show 
  • Network accessline 35
    best experience for your users, like [checking whether the user has already granted the runtime permissions](https://developer.android.com/training/permissions/requesting#already-granted) your app requires and [whether your app should show 
  • Network accessline 36
    granted the runtime permissions](https://developer.android.com/training/permissions/requesting#already-granted) your app requires and [whether your app
  • Network accessline 36
    granted the runtime permissions](https://developer.android.com/training/permissions/requesting#already-granted) your app requires and [whether your app
  • Network accessline 37
    should show a rationale](https://developer.android.com/training/permissions/requesting#explain) to the user before requesting glasses-specific
  • Network accessline 37
    should show a rationale](https://developer.android.com/training/permissions/requesting#explain) to the user before requesting glasses-specific
  • Network accessline 42
    There are different scenarios you might encounter when requesting [dangerous runtime permissions](https://developer.android.com/guide/topics/permissions/requesting#normal-dangerous) on audio and display glasses:
  • Network accessline 42
    There are different scenarios you might encounter when requesting [dangerous runtime permissions](https://developer.android.com/guide/topics/permissions/requesting#normal-dangerous) on audio and display glasses:
  • Network accessline 43
    runtime permissions](https://developer.android.com/guide/topics/permissions/requesting#normal-dangerous) on audio and display glasses:
  • Network accessline 43
    runtime permissions](https://developer.android.com/guide/topics/permissions/requesting#normal-dangerous) on audio and display glasses:
  • Network accessline 52
    To request runtime permissions for audio or display glasses from a projected activity, use the [`ProjectedActivityCompat.requestPermissions`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedActivityCompat#reque
  • Network accessline 52
    To request runtime permissions for audio or display glasses from a projected activity, use the [`ProjectedActivityCompat.requestPermissions`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedActivityCompat#reque
  • Network accessline 53
    activity, use the [`ProjectedActivityCompat.requestPermissions`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedActivityCompat#requestPermissions(android.app.Activity,kotlin.Array,kotlin.Int)) method.
  • Network accessline 53
    activity, use the [`ProjectedActivityCompat.requestPermissions`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedActivityCompat#requestPermissions(android.app.Activity,kotlin.Array,kotlin.Int)) method.
  • Network accessline 88
    - Use `ProjectedActivityCompat.requestPermissions` instead of the standard [`ActivityCompat`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat) method. This method explicitly targets the runtime permissions fo
  • Network accessline 88
    - Use `ProjectedActivityCompat.requestPermissions` instead of the standard [`ActivityCompat`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat) method. This method explicitly targets the runtime permissions fo
  • Network accessline 92
    Once the user responds to the permission dialog on the phone, their decision is delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPe
  • Network accessline 92
    Once the user responds to the permission dialog on the phone, their decision is delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPe
  • Network accessline 93
    delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,in
  • Network accessline 93
    delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,in
  • Network accessline 134
    - Use the `deviceId` overload with the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,i
  • Network accessline 134
    - Use the `deviceId` overload with the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,i
  • Network accessline 141
    camera for a first-person point of view---request the permissions using the device-specific [`Activity#requestPermissions(permissions, requestCode, deviceId)`](https://developer.android.com/reference/kotlin/android/app/Activity#requestpermi
  • Network accessline 141
    camera for a first-person point of view---request the permissions using the device-specific [`Activity#requestPermissions(permissions, requestCode, deviceId)`](https://developer.android.com/reference/kotlin/android/app/Activity#requestpermi
  • Network accessline 143
    deviceId)`](https://developer.android.com/reference/kotlin/android/app/Activity#requestpermissions_1) method:
  • Network accessline 143
    deviceId)`](https://developer.android.com/reference/kotlin/android/app/Activity#requestpermissions_1) method:
  • Network accessline 160
    - To target audio and display glasses, obtain the appropriate device ID from a projected context that you've created using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContex
  • Network accessline 160
    - To target audio and display glasses, obtain the appropriate device ID from a projected context that you've created using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContex
  • Network accessline 164
    Once the user responds to the permission dialog on the phone, their decision is delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPe
  • Network accessline 164
    Once the user responds to the permission dialog on the phone, their decision is delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPe
  • Network accessline 165
    delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,in
  • Network accessline 165
    delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,in

xr/display-glasses-with-jetpack-compose-glimmer/references/button-samples-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/button-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/card-samples-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/card-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/deptheffect-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/deptheffectlevels-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/glimmersansflextypography-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/glimmertheme-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/icon-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/iconbutton-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/iconsizes-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/listitem-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/liststate-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/material-hct-source.md

  • Network accessline 10
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 10
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 11
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/projectedcontext-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/stack-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/stackitemscope-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/stackstate-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/surface-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/titlechip-samples-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/display-glasses-with-jetpack-compose-glimmer/references/titlechip-source.md

  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 12
    *  *      http://www.apache.org/licenses/LICENSE-2.0  *
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 13
    *      http://www.apache.org/licenses/LICENSE-2.0

xr/projected-hardware/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md

  • Network accessline 1
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 1
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 2
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 2
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 6
    After you've [requested and been granted the necessary permissions](https://developer.android.com/develop/xr/jetpack-xr-sdk/request-hardware-permissions), your app
  • Network accessline 6
    After you've [requested and been granted the necessary permissions](https://developer.android.com/develop/xr/jetpack-xr-sdk/request-hardware-permissions), your app
  • Network accessline 7
    can access the hardware on the audio glasses or display glasses. The key to accessing the glasses' hardware (instead of the phone's hardware), is to use a [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/s
  • Network accessline 7
    can access the hardware on the audio glasses or display glasses. The key to accessing the glasses' hardware (instead of the phone's hardware), is to use a [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/s
  • Network accessline 9
    [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#projected-context).
  • Network accessline 9
    [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#projected-context).
  • Network accessline 16
    If your app's code is running from within your [projected activity](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#activity-lifecycle), its own
  • Network accessline 16
    If your app's code is running from within your [projected activity](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#activity-lifecycle), its own
  • Network accessline 17
    activity context is already a [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#projected-context). In this scenario, calls
  • Network accessline 17
    activity context is already a [projected context](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#projected-context). In this scenario, calls
  • Network accessline 23
    activity or a service) needs to access the glasses' hardware, it must explicitly obtain a projected context. To do this, use the [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/Projected
  • Network accessline 23
    activity or a service) needs to access the glasses' hardware, it must explicitly obtain a projected context. To do this, use the [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/Projected
  • Network accessline 25
    [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) method:
  • Network accessline 25
    [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) method:
  • Network accessline 63
    Wrap the [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) call within the
  • Network accessline 63
    Wrap the [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) call within the
  • Network accessline 64
    [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.content.Context,kotlin.coroutines.CoroutineContext)). While this method
  • Network accessline 64
    [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.content.Context,kotlin.coroutines.CoroutineContext)). While this method
  • Network accessline 71
    The projected context is tied to the lifecycle of the connected device, so it is destroyed when the device disconnects. When the device disconnects, [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kot
  • Network accessline 71
    The projected context is tied to the lifecycle of the connected device, so it is destroyed when the device disconnects. When the device disconnects, [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kot
  • Network accessline 72
    destroyed when the device disconnects. When the device disconnects, [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.con
  • Network accessline 72
    destroyed when the device disconnects. When the device disconnects, [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.con
  • Network accessline 73
    [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.content.Context,kotlin.coroutines.CoroutineContext)) returns `false`. Y
  • Network accessline 73
    [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(android.content.Context,kotlin.coroutines.CoroutineContext)) returns `false`. Y
  • Network accessline 80
    When the glasses reconnect, your app can obtain another projected context instance using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(and
  • Network accessline 80
    When the glasses reconnect, your app can obtain another projected context instance using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(and
  • Network accessline 81
    instance using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)), and then re-initialize any
  • Network accessline 81
    instance using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)), and then re-initialize any
  • Network accessline 95
    To record audio using Bluetooth HFP, first request the required runtime permissions, and then record the audio using the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API, as
  • Network accessline 95
    To record audio using Bluetooth HFP, first request the required runtime permissions, and then record the audio using the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API, as
  • Network accessline 96
    permissions, and then record the audio using the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API, as
  • Network accessline 96
    permissions, and then record the audio using the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API, as
  • Network accessline 101
    As with any standard Bluetooth audio device, the [`RECORD_AUDIO`](https://developer.android.com/reference/kotlin/android/Manifest.permission#record_audio),
  • Network accessline 101
    As with any standard Bluetooth audio device, the [`RECORD_AUDIO`](https://developer.android.com/reference/kotlin/android/Manifest.permission#record_audio),
  • Network accessline 102
    [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/kotlin/android/Manifest.permission#bluetooth_connect), and other related permissions are controlled by the
  • Network accessline 102
    [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/kotlin/android/Manifest.permission#bluetooth_connect), and other related permissions are controlled by the
  • Network accessline 107
    1. [Declare following permissions](https://developer.android.com/develop/xr/jetpack-xr-sdk/request-hardware-permissions#declare-permissions) in your app's manifest file:
  • Network accessline 107
    1. [Declare following permissions](https://developer.android.com/develop/xr/jetpack-xr-sdk/request-hardware-permissions#declare-permissions) in your app's manifest file:
  • Network accessline 109
    - [`RECORD_AUDIO`](https://developer.android.com/reference/kotlin/android/Manifest.permission#record_audio)
  • Network accessline 109
    - [`RECORD_AUDIO`](https://developer.android.com/reference/kotlin/android/Manifest.permission#record_audio)
  • Network accessline 110
    - [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/kotlin/android/Manifest.permission#bluetooth_connect)
  • Network accessline 110
    - [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/kotlin/android/Manifest.permission#bluetooth_connect)
  • Network accessline 111
    - [`MODIFY_AUDIO_SETTINGS`](https://developer.android.com/reference/kotlin/android/Manifest.permission#modify_audio_settings)
  • Network accessline 111
    - [`MODIFY_AUDIO_SETTINGS`](https://developer.android.com/reference/kotlin/android/Manifest.permission#modify_audio_settings)
  • Network accessline 113
    runtime using the [standard Android permission flow](https://developer.android.com/training/permissions/requesting).
  • Network accessline 113
    runtime using the [standard Android permission flow](https://developer.android.com/training/permissions/requesting).
  • Network accessline 117
    After the user has granted your app the necessary runtime permissions, use the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API to set the communication device to
  • Network accessline 117
    After the user has granted your app the necessary runtime permissions, use the [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API to set the communication device to
  • Network accessline 118
    [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API to set the communication device to
  • Network accessline 118
    [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager) API to set the communication device to
  • Network accessline 119
    [`TYPE_BLUETOOTH_SCO`](https://developer.android.com/reference/kotlin/android/media/AudioDeviceInfo#type_bluetooth_sco) to route the audio through Bluetooth HFP. This
  • Network accessline 119
    [`TYPE_BLUETOOTH_SCO`](https://developer.android.com/reference/kotlin/android/media/AudioDeviceInfo#type_bluetooth_sco) to route the audio through Bluetooth HFP. This
  • Network accessline 144
    > [!NOTE] > **Note:** To learn more about Bluetooth connectivity, refer to our [documentation](https://developer.android.com/develop/connectivity/bluetooth).
  • Network accessline 144
    > [!NOTE] > **Note:** To learn more about Bluetooth connectivity, refer to our [documentation](https://developer.android.com/develop/connectivity/bluetooth).
  • Network accessline 145
    > **Note:** To learn more about Bluetooth connectivity, refer to our [documentation](https://developer.android.com/develop/connectivity/bluetooth).
  • Network accessline 145
    > **Note:** To learn more about Bluetooth connectivity, refer to our [documentation](https://developer.android.com/develop/connectivity/bluetooth).
  • Network accessline 149
    To capture an image with the glasses' camera, set up and bind the CameraX's [`ImageCapture`](https://developer.android.com/reference/kotlin/androidx/camera/core/ImageCapture) [use case](https://developer.android.com/media/camera/camerax#eas
  • Network accessline 149
    To capture an image with the glasses' camera, set up and bind the CameraX's [`ImageCapture`](https://developer.android.com/reference/kotlin/androidx/camera/core/ImageCapture) [use case](https://developer.android.com/media/camera/camerax#eas
  • Network accessline 150
    [`ImageCapture`](https://developer.android.com/reference/kotlin/androidx/camera/core/ImageCapture) [use case](https://developer.android.com/media/camera/camerax#ease-of-use) to the glasses' camera using the correct
  • Network accessline 150
    [`ImageCapture`](https://developer.android.com/reference/kotlin/androidx/camera/core/ImageCapture) [use case](https://developer.android.com/media/camera/camerax#ease-of-use) to the glasses' camera using the correct
  • Network accessline 236
    - Obtains an instance of the [`ProcessCameraProvider`](https://developer.android.com/reference/kotlin/androidx/camera/lifecycle/ProcessCameraProvider) using the [**projected device context**](https://developer.android.com/develop/xr/jetpack
  • Network accessline 236
    - Obtains an instance of the [`ProcessCameraProvider`](https://developer.android.com/reference/kotlin/androidx/camera/lifecycle/ProcessCameraProvider) using the [**projected device context**](https://developer.android.com/develop/xr/jetpack
  • Network accessline 237
    - Within the projected context's scope, the glasses' primary, outward-pointing camera maps to the `DEFAULT_BACK_CAMERA` when selecting a camera. - A pre-binding check uses [`cameraProvider.hasCamera(cameraSelector)`](https://developer.andro
  • Network accessline 237
    - Within the projected context's scope, the glasses' primary, outward-pointing camera maps to the `DEFAULT_BACK_CAMERA` when selecting a camera. - A pre-binding check uses [`cameraProvider.hasCamera(cameraSelector)`](https://developer.andro
  • Network accessline 238
    - A pre-binding check uses [`cameraProvider.hasCamera(cameraSelector)`](https://developer.android.com/reference/kotlin/androidx/camera/lifecycle/ProcessCameraProvider#hasCamera(androidx.camera.core.CameraSelector)) to verify that the select
  • Network accessline 238
    - A pre-binding check uses [`cameraProvider.hasCamera(cameraSelector)`](https://developer.android.com/reference/kotlin/androidx/camera/lifecycle/ProcessCameraProvider#hasCamera(androidx.camera.core.CameraSelector)) to verify that the select
  • Network accessline 239
    - Uses **Camera2 Interop** with [`Camera2CameraInfo`](https://developer.android.com/reference/kotlin/androidx/camera/camera2/interop/Camera2CameraInfo) to read the underlying [`CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP`](https:/
  • Network accessline 239
    - Uses **Camera2 Interop** with [`Camera2CameraInfo`](https://developer.android.com/reference/kotlin/androidx/camera/camera2/interop/Camera2CameraInfo) to read the underlying [`CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP`](https:/
  • Network accessline 240
    - A custom [`ResolutionSelector`](https://developer.android.com/reference/kotlin/androidx/camera/core/resolutionselector/ResolutionSelector) is built to precisely control the output image resolution for [`ImageCapture`](https://developer.an
  • Network accessline 240
    - A custom [`ResolutionSelector`](https://developer.android.com/reference/kotlin/androidx/camera/core/resolutionselector/ResolutionSelector) is built to precisely control the output image resolution for [`ImageCapture`](https://developer.an
  • Network accessline 241
    - Creates an `ImageCapture` use case that is configured with a custom `ResolutionSelector`. - Binds the `ImageCapture` use case to the activity's lifecycle. This automatically manages the opening and closing of the camera based on the activ
  • Network accessline 241
    - Creates an `ImageCapture` use case that is configured with a custom `ResolutionSelector`. - Binds the `ImageCapture` use case to the activity's lifecycle. This automatically manages the opening and closing of the camera based on the activ
  • Network accessline 243
    - **Configuring for single-stream hardware:** The glasses camera pipeline is constrained to a single active stream at a time. When `ImageCapture` is bound alone, CameraX attaches an internal repeating stream (`MeteringRepeating`) for focus 
  • Network accessline 243
    - **Configuring for single-stream hardware:** The glasses camera pipeline is constrained to a single active stream at a time. When `ImageCapture` is bound alone, CameraX attaches an internal repeating stream (`MeteringRepeating`) for focus 
  • Network accessline 245
    After the glasses' camera is set up, you can capture an image with the CameraX's `ImageCapture` class. Refer to the CameraX's documentation to learn about using [`takePicture`](https://developer.android.com/media/camera/camerax/take-photo#t
  • Network accessline 245
    After the glasses' camera is set up, you can capture an image with the CameraX's `ImageCapture` class. Refer to the CameraX's documentation to learn about using [`takePicture`](https://developer.android.com/media/camera/camerax/take-photo#t
  • Network accessline 247
    [`takePicture`](https://developer.android.com/media/camera/camerax/take-photo#take_a_picture) to [capture an image](https://developer.android.com/media/camera/camerax/take-photo#take_a_picture).
  • Network accessline 247
    [`takePicture`](https://developer.android.com/media/camera/camerax/take-photo#take_a_picture) to [capture an image](https://developer.android.com/media/camera/camerax/take-photo#take_a_picture).
  • Network accessline 251
    To capture a video instead of an image with the glasses' camera, replace the `ImageCapture` components with the corresponding [`VideoCapture`](https://developer.android.com/reference/kotlin/androidx/camera/video/VideoCapture) components
  • Network accessline 251
    To capture a video instead of an image with the glasses' camera, replace the `ImageCapture` components with the corresponding [`VideoCapture`](https://developer.android.com/reference/kotlin/androidx/camera/video/VideoCapture) components
  • Network accessline 252
    `ImageCapture` components with the corresponding [`VideoCapture`](https://developer.android.com/reference/kotlin/androidx/camera/video/VideoCapture) components
  • Network accessline 252
    `ImageCapture` components with the corresponding [`VideoCapture`](https://developer.android.com/reference/kotlin/androidx/camera/video/VideoCapture) components
  • Network accessline 256
    file, and initiating the capture using the appropriate video recording method. For more information about the `VideoCapture` API and how to use it, see the [CameraX's video capture documentation](https://developer.android.com/media/camera/c
  • Network accessline 256
    file, and initiating the capture using the appropriate video recording method. For more information about the `VideoCapture` API and how to use it, see the [CameraX's video capture documentation](https://developer.android.com/media/camera/c
  • Network accessline 258
    [CameraX's video capture documentation](https://developer.android.com/media/camera/camerax/video-capture#using-videocapture-api).
  • Network accessline 258
    [CameraX's video capture documentation](https://developer.android.com/media/camera/camerax/video-capture#using-videocapture-api).
  • Network accessline 274
    An [projected activity](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#activity-lifecycle) can also access the phone's hardware (such as the
  • Network accessline 274
    An [projected activity](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#activity-lifecycle) can also access the phone's hardware (such as the
  • Network accessline 275
    camera or microphone) by using [`createHostDeviceContext(context)`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createHostDeviceContext(android.content.Context)) to get
  • Network accessline 275
    camera or microphone) by using [`createHostDeviceContext(context)`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createHostDeviceContext(android.content.Context)) to get
  • Network accessline 299
    - Use the [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity) context from the phone `Activity` or the [`ProjectedContext.createHostDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/pro
  • Network accessline 299
    - Use the [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity) context from the phone `Activity` or the [`ProjectedContext.createHostDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/pro
  • Network accessline 300
    - Don't use [`getApplicationContext`](https://developer.android.com/reference/kotlin/android/content/Context#getapplicationcontext) because the application context can incorrectly return the glasses' context if a projected activity was the 
  • Network accessline 300
    - Don't use [`getApplicationContext`](https://developer.android.com/reference/kotlin/android/content/Context#getapplicationcontext) because the application context can incorrectly return the glasses' context if a projected activity was the 

xr/projected-hardware/references/android/develop/xr/jetpack-xr-sdk/glasses/check-availability.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 5
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 5
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 12
    account for these kinds of changes in device availability, your app can use the XR Device Availability API, which consolidates device availability signals into the standard Android [`Lifecycle.State`](https://developer.android.com/reference
  • Network accessline 12
    account for these kinds of changes in device availability, your app can use the XR Device Availability API, which consolidates device availability signals into the standard Android [`Lifecycle.State`](https://developer.android.com/reference
  • Network accessline 13
    XR Device Availability API, which consolidates device availability signals into the standard Android [`Lifecycle.State`](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State) values. Use this API to help manage 
  • Network accessline 13
    XR Device Availability API, which consolidates device availability signals into the standard Android [`Lifecycle.State`](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State) values. Use this API to help manage 
  • Network accessline 14
    the standard Android [`Lifecycle.State`](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State) values. Use this API to help manage
  • Network accessline 14
    the standard Android [`Lifecycle.State`](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State) values. Use this API to help manage
  • Network accessline 73
    - **Check for a connection** : Before accessing the device lifecycle, call [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(andr
  • Network accessline 73
    - **Check for a connection** : Before accessing the device lifecycle, call [`ProjectedContext.isProjectedDeviceConnected`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#isProjectedDeviceConnected(andr
  • Network accessline 74
    - **Obtain a `ProjectedContext`** : Only call [`ProjectedContext.createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) aft
  • Network accessline 74
    - **Obtain a `ProjectedContext`** : Only call [`ProjectedContext.createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContext#createProjectedDeviceContext(android.content.Context)) aft

xr/projected-hardware/references/android/develop/xr/jetpack-xr-sdk/glasses/support-different-types.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 5
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 5
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 10
    capabilities. For example, while all audio glasses and display glasses feature audio experiences through voice, only display glasses have a display where your app can show [UIs built with Jetpack Compose Glimmer](https://developer.android.c
  • Network accessline 10
    capabilities. For example, while all audio glasses and display glasses feature audio experiences through voice, only display glasses have a display where your app can show [UIs built with Jetpack Compose Glimmer](https://developer.android.c
  • Network accessline 12
    app can show [UIs built with Jetpack Compose Glimmer](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer).
  • Network accessline 12
    app can show [UIs built with Jetpack Compose Glimmer](https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer).
  • Network accessline 14
    To create a seamless user experience across a range of devices, plan your [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity) for glasses to check for different device capabilities. This
  • Network accessline 14
    To create a seamless user experience across a range of devices, plan your [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity) for glasses to check for different device capabilities. This
  • Network accessline 15
    [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity) for glasses to check for different device capabilities. This
  • Network accessline 15
    [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity) for glasses to check for different device capabilities. This
  • Network accessline 23
    device (such as user's phone). Dedicated activities that you build for this purpose are *projected activities* . The lifecycle of projected activities is built off the [standard activity lifecycle](https://developer.android.com/guide/compon
  • Network accessline 23
    device (such as user's phone). Dedicated activities that you build for this purpose are *projected activities* . The lifecycle of projected activities is built off the [standard activity lifecycle](https://developer.android.com/guide/compon
  • Network accessline 24
    purpose are *projected activities* . The lifecycle of projected activities is built off the [standard activity lifecycle](https://developer.android.com/guide/components/activities/activity-lifecycle), but it also includes several key differ
  • Network accessline 24
    purpose are *projected activities* . The lifecycle of projected activities is built off the [standard activity lifecycle](https://developer.android.com/guide/components/activities/activity-lifecycle), but it also includes several key differ
  • Network accessline 25
    built off the [standard activity lifecycle](https://developer.android.com/guide/components/activities/activity-lifecycle), but it also includes several key
  • Network accessline 25
    built off the [standard activity lifecycle](https://developer.android.com/guide/components/activities/activity-lifecycle), but it also includes several key
  • Network accessline 26
    differences that support the capabilities of different types of audio glasses and display glasses. ![](https://developer.android.com/static/images/develop/xr/jetpack-xr-sdk/activity-lifecycle.png) **Figure 1**. The key events in the lifecyc
  • Network accessline 26
    differences that support the capabilities of different types of audio glasses and display glasses. ![](https://developer.android.com/static/images/develop/xr/jetpack-xr-sdk/activity-lifecycle.png) **Figure 1**. The key events in the lifecyc
  • Network accessline 28
    ![](https://developer.android.com/static/images/develop/xr/jetpack-xr-sdk/activity-lifecycle.png) **Figure 1**. The key events in the lifecycle of projected activities.
  • Network accessline 28
    ![](https://developer.android.com/static/images/develop/xr/jetpack-xr-sdk/activity-lifecycle.png) **Figure 1**. The key events in the lifecycle of projected activities.
  • Network accessline 33
    - [`onCreate()`](https://developer.android.com/reference/kotlin/android/app/Activity#onCreate(android.os.Bundle))
  • Network accessline 33
    - [`onCreate()`](https://developer.android.com/reference/kotlin/android/app/Activity#onCreate(android.os.Bundle))
  • Network accessline 34
    - Called when the projected activity is created.   - Initialize your app's Jetpack Compose Glimmer UI and other components here. - [`onStart()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStart())
  • Network accessline 34
    - Called when the projected activity is created.   - Initialize your app's Jetpack Compose Glimmer UI and other components here. - [`onStart()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStart())
  • Network accessline 35
    - Initialize your app's Jetpack Compose Glimmer UI and other components here. - [`onStart()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStart())   - Called when the projected activity is starting and the user is 
  • Network accessline 35
    - Initialize your app's Jetpack Compose Glimmer UI and other components here. - [`onStart()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStart())   - Called when the projected activity is starting and the user is 
  • Network accessline 36
    - [`onStart()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStart())
  • Network accessline 36
    - [`onStart()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStart())
  • Network accessline 37
    - Called when the projected activity is starting and the user is [aware](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#awareness) of the app.
  • Network accessline 37
    - Called when the projected activity is starting and the user is [aware](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#awareness) of the app.
  • Network accessline 38
    - [`onResume()`](https://developer.android.com/reference/kotlin/android/app/Activity#onResume())
  • Network accessline 38
    - [`onResume()`](https://developer.android.com/reference/kotlin/android/app/Activity#onResume())
  • Network accessline 39
    - Called when the projected activity regains focus. While the activity is in focus, it is interactable and can consume touchpad or button input.   - Called when the glasses are put back on (donned), after they were previously taken off the 
  • Network accessline 39
    - Called when the projected activity regains focus. While the activity is in focus, it is interactable and can consume touchpad or button input.   - Called when the glasses are put back on (donned), after they were previously taken off the 
  • Network accessline 40
    - Called when the glasses are put back on (donned), after they were previously taken off the head (doffed). - [`onPause()`](https://developer.android.com/reference/kotlin/android/app/Activity#onPause())   - Called when the projected activit
  • Network accessline 40
    - Called when the glasses are put back on (donned), after they were previously taken off the head (doffed). - [`onPause()`](https://developer.android.com/reference/kotlin/android/app/Activity#onPause())   - Called when the projected activit
  • Network accessline 41
    - [`onPause()`](https://developer.android.com/reference/kotlin/android/app/Activity#onPause())
  • Network accessline 41
    - [`onPause()`](https://developer.android.com/reference/kotlin/android/app/Activity#onPause())
  • Network accessline 42
    - Called when the projected activity loses focus, but the user is still [aware](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#awareness) of your app. While the activity is out of focus, it isn't int
  • Network accessline 42
    - Called when the projected activity loses focus, but the user is still [aware](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#awareness) of your app. While the activity is out of focus, it isn't int
  • Network accessline 43
    - [`onStop()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStop())
  • Network accessline 43
    - [`onStop()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStop())
  • Network accessline 44
    - Called when the system believes the user is no longer [aware](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#awareness) of your app.
  • Network accessline 44
    - Called when the system believes the user is no longer [aware](https://developer.android.com/develop/xr/jetpack-xr-sdk/glasses/support-different-types#awareness) of your app.
  • Network accessline 45
    - Called when the glasses are removed from the head (doffed). - [`onDestroy()`](https://developer.android.com/reference/kotlin/android/app/Activity#onDestroy())   - Called when the projected activity is about to be destroyed. When this is c
  • Network accessline 45
    - Called when the glasses are removed from the head (doffed). - [`onDestroy()`](https://developer.android.com/reference/kotlin/android/app/Activity#onDestroy())   - Called when the projected activity is about to be destroyed. When this is c
  • Network accessline 46
    - [`onDestroy()`](https://developer.android.com/reference/kotlin/android/app/Activity#onDestroy())
  • Network accessline 46
    - [`onDestroy()`](https://developer.android.com/reference/kotlin/android/app/Activity#onDestroy())
  • Network accessline 51
    In a standard [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity), the lifecycle state changes when the device's
  • Network accessline 51
    In a standard [`Activity`](https://developer.android.com/reference/kotlin/android/app/Activity), the lifecycle state changes when the device's
  • Network accessline 52
    screen turns off, typically moving to [`onPause()`](https://developer.android.com/reference/kotlin/android/app/Activity#onPause()) or [`onStop()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStop()). In
  • Network accessline 52
    screen turns off, typically moving to [`onPause()`](https://developer.android.com/reference/kotlin/android/app/Activity#onPause()) or [`onStop()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStop()). In
  • Network accessline 58
    Other [activity state changes](https://developer.android.com/guide/components/activities/state-changes) triggered by different system and user events
  • Network accessline 58
    Other [activity state changes](https://developer.android.com/guide/components/activities/state-changes) triggered by different system and user events
  • Network accessline 73
    - The [`onStart()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStart()) state for projected activities means the activity is active.
  • Network accessline 73
    - The [`onStart()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStart()) state for projected activities means the activity is active.
  • Network accessline 74
    - The [`onResume()`](https://developer.android.com/reference/kotlin/android/app/Activity#onResume()) state means the activity is interactable and can receive touchpad input, or is receiving primary input dispatch.
  • Network accessline 74
    - The [`onResume()`](https://developer.android.com/reference/kotlin/android/app/Activity#onResume()) state means the activity is interactable and can receive touchpad input, or is receiving primary input dispatch.
  • Network accessline 77
    the foreground. If the system doesn't detect any signals of awareness for a short period of time, the system removes the activity from the foreground and eventually triggers [`onStop()`](https://developer.android.com/reference/kotlin/androi
  • Network accessline 77
    the foreground. If the system doesn't detect any signals of awareness for a short period of time, the system removes the activity from the foreground and eventually triggers [`onStop()`](https://developer.android.com/reference/kotlin/androi
  • Network accessline 79
    eventually triggers [`onStop()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStop()).
  • Network accessline 79
    eventually triggers [`onStop()`](https://developer.android.com/reference/kotlin/android/app/Activity#onStop()).
  • Network accessline 83
    Audio glasses and display glasses are treated as a connected device that extends the capabilities of a user's phone. A *projected context* is a device-aware [`Context`](https://developer.android.com/reference/kotlin/android/content/Context)
  • Network accessline 83
    Audio glasses and display glasses are treated as a connected device that extends the capabilities of a user's phone. A *projected context* is a device-aware [`Context`](https://developer.android.com/reference/kotlin/android/content/Context)
  • Network accessline 84
    the capabilities of a user's phone. A *projected context* is a device-aware [`Context`](https://developer.android.com/reference/kotlin/android/content/Context) that lets apps interact with the hardware on a connected glasses device---such a
  • Network accessline 84
    the capabilities of a user's phone. A *projected context* is a device-aware [`Context`](https://developer.android.com/reference/kotlin/android/content/Context) that lets apps interact with the hardware on a connected glasses device---such a
  • Network accessline 85
    [`Context`](https://developer.android.com/reference/kotlin/android/content/Context) that lets apps interact with the hardware on a connected glasses
  • Network accessline 85
    [`Context`](https://developer.android.com/reference/kotlin/android/content/Context) that lets apps interact with the hardware on a connected glasses
  • Network accessline 99
    projected activity (such as a phone activity or a service) needs to access   the glasses' hardware, it must explicitly obtain a projected context. To do   this, use the [`createProjectedDeviceContext()`](https://developer.android.com/develo
  • Network accessline 99
    projected activity (such as a phone activity or a service) needs to access   the glasses' hardware, it must explicitly obtain a projected context. To do   this, use the [`createProjectedDeviceContext()`](https://developer.android.com/develo
  • Network accessline 101
    this, use the [`createProjectedDeviceContext()`](https://developer.android.com/develop/xr/jetpack-xr-sdk/access-hardware-projected-context#phone-activity-service) method.
  • Network accessline 101
    this, use the [`createProjectedDeviceContext()`](https://developer.android.com/develop/xr/jetpack-xr-sdk/access-hardware-projected-context#phone-activity-service) method.
  • Network accessline 103
    For more information, see [Use a projected context to access hardware on audio glasses and display glasses](https://developer.android.com/develop/xr/jetpack-xr-sdk/access-hardware-projected-context).
  • Network accessline 103
    For more information, see [Use a projected context to access hardware on audio glasses and display glasses](https://developer.android.com/develop/xr/jetpack-xr-sdk/access-hardware-projected-context).
  • Network accessline 104
    glasses and display glasses](https://developer.android.com/develop/xr/jetpack-xr-sdk/access-hardware-projected-context).
  • Network accessline 104
    glasses and display glasses](https://developer.android.com/develop/xr/jetpack-xr-sdk/access-hardware-projected-context).
  • Network accessline 113
    - [`CameraManager`](https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraManager): Accesses the camera on the glasses.
  • Network accessline 113
    - [`CameraManager`](https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraManager): Accesses the camera on the glasses.
  • Network accessline 114
    - [`SensorManager`](https://developer.android.com/reference/kotlin/android/hardware/SensorManager): Retrieves sensor data (for example, gyroscope or accelerometer data) from the glasses.
  • Network accessline 114
    - [`SensorManager`](https://developer.android.com/reference/kotlin/android/hardware/SensorManager): Retrieves sensor data (for example, gyroscope or accelerometer data) from the glasses.
  • Network accessline 115
    - [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager): Manages audio streams, volume, and routing on the glasses.
  • Network accessline 115
    - [`AudioManager`](https://developer.android.com/reference/kotlin/android/media/AudioManager): Manages audio streams, volume, and routing on the glasses.
  • Network accessline 116
    - [`AudioRecord`](https://developer.android.com/reference/kotlin/android/media/AudioRecord): Captures audio using the glasses' microphone.
  • Network accessline 116
    - [`AudioRecord`](https://developer.android.com/reference/kotlin/android/media/AudioRecord): Captures audio using the glasses' microphone.

xr/projected-hardware/references/android/develop/xr/jetpack-xr-sdk/request-hardware-permissions.md

  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 4
    Applicable XR devices This guidance helps you build experiences for these types of XR devices. [Learn about XR device types →](https://developer.android.com/develop/xr/devices) ![](https://developer.android.com/static/images/develop/xr/ai-g
  • Network accessline 5
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 5
    Display Glasses [](https://developer.android.com/develop/xr/devices#audio-display) [Learn about XR device types →](https://developer.android.com/develop/xr/devices)
  • Network accessline 17
    Before requesting permissions, you must [declare them in your app's manifest](https://developer.android.com/training/permissions/declaring)
  • Network accessline 17
    Before requesting permissions, you must [declare them in your app's manifest](https://developer.android.com/training/permissions/declaring)
  • Network accessline 18
    file using the [`<uses-permission>`](https://developer.android.com/guide/topics/manifest/uses-permission-element) element. This declaration remains the
  • Network accessline 18
    file using the [`<uses-permission>`](https://developer.android.com/guide/topics/manifest/uses-permission-element) element. This declaration remains the
  • Network accessline 34
    Review the [permission principles and workflows](https://developer.android.com/training/permissions/requesting#principles) to make sure you provide the
  • Network accessline 34
    Review the [permission principles and workflows](https://developer.android.com/training/permissions/requesting#principles) to make sure you provide the
  • Network accessline 35
    best experience for your users, like [checking whether the user has already granted the runtime permissions](https://developer.android.com/training/permissions/requesting#already-granted) your app requires and [whether your app should show 
  • Network accessline 35
    best experience for your users, like [checking whether the user has already granted the runtime permissions](https://developer.android.com/training/permissions/requesting#already-granted) your app requires and [whether your app should show 
  • Network accessline 36
    granted the runtime permissions](https://developer.android.com/training/permissions/requesting#already-granted) your app requires and [whether your app
  • Network accessline 36
    granted the runtime permissions](https://developer.android.com/training/permissions/requesting#already-granted) your app requires and [whether your app
  • Network accessline 37
    should show a rationale](https://developer.android.com/training/permissions/requesting#explain) to the user before requesting glasses-specific
  • Network accessline 37
    should show a rationale](https://developer.android.com/training/permissions/requesting#explain) to the user before requesting glasses-specific
  • Network accessline 42
    There are different scenarios you might encounter when requesting [dangerous runtime permissions](https://developer.android.com/guide/topics/permissions/requesting#normal-dangerous) on audio and display glasses:
  • Network accessline 42
    There are different scenarios you might encounter when requesting [dangerous runtime permissions](https://developer.android.com/guide/topics/permissions/requesting#normal-dangerous) on audio and display glasses:
  • Network accessline 43
    runtime permissions](https://developer.android.com/guide/topics/permissions/requesting#normal-dangerous) on audio and display glasses:
  • Network accessline 43
    runtime permissions](https://developer.android.com/guide/topics/permissions/requesting#normal-dangerous) on audio and display glasses:
  • Network accessline 52
    To request runtime permissions for audio or display glasses from a projected activity, use the [`ProjectedActivityCompat.requestPermissions`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedActivityCompat#reque
  • Network accessline 52
    To request runtime permissions for audio or display glasses from a projected activity, use the [`ProjectedActivityCompat.requestPermissions`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedActivityCompat#reque
  • Network accessline 53
    activity, use the [`ProjectedActivityCompat.requestPermissions`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedActivityCompat#requestPermissions(android.app.Activity,kotlin.Array,kotlin.Int)) method.
  • Network accessline 53
    activity, use the [`ProjectedActivityCompat.requestPermissions`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedActivityCompat#requestPermissions(android.app.Activity,kotlin.Array,kotlin.Int)) method.
  • Network accessline 88
    - Use `ProjectedActivityCompat.requestPermissions` instead of the standard [`ActivityCompat`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat) method. This method explicitly targets the runtime permissions fo
  • Network accessline 88
    - Use `ProjectedActivityCompat.requestPermissions` instead of the standard [`ActivityCompat`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat) method. This method explicitly targets the runtime permissions fo
  • Network accessline 92
    Once the user responds to the permission dialog on the phone, their decision is delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPe
  • Network accessline 92
    Once the user responds to the permission dialog on the phone, their decision is delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPe
  • Network accessline 93
    delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,in
  • Network accessline 93
    delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,in
  • Network accessline 134
    - Use the `deviceId` overload with the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,i
  • Network accessline 134
    - Use the `deviceId` overload with the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,i
  • Network accessline 141
    camera for a first-person point of view---request the permissions using the device-specific [`Activity#requestPermissions(permissions, requestCode, deviceId)`](https://developer.android.com/reference/kotlin/android/app/Activity#requestpermi
  • Network accessline 141
    camera for a first-person point of view---request the permissions using the device-specific [`Activity#requestPermissions(permissions, requestCode, deviceId)`](https://developer.android.com/reference/kotlin/android/app/Activity#requestpermi
  • Network accessline 143
    deviceId)`](https://developer.android.com/reference/kotlin/android/app/Activity#requestpermissions_1) method:
  • Network accessline 143
    deviceId)`](https://developer.android.com/reference/kotlin/android/app/Activity#requestpermissions_1) method:
  • Network accessline 160
    - To target audio and display glasses, obtain the appropriate device ID from a projected context that you've created using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContex
  • Network accessline 160
    - To target audio and display glasses, obtain the appropriate device ID from a projected context that you've created using [`createProjectedDeviceContext`](https://developer.android.com/reference/kotlin/androidx/xr/projected/ProjectedContex
  • Network accessline 164
    Once the user responds to the permission dialog on the phone, their decision is delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPe
  • Network accessline 164
    Once the user responds to the permission dialog on the phone, their decision is delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPe
  • Network accessline 165
    delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,in
  • Network accessline 165
    delivered to your app by invoking the [`onRequestPermissionsResult`](https://developer.android.com/reference/kotlin/androidx/core/app/ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int,java.lang.String%5B%5D,in

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 500 facts

and 450 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md build-system/agp/agp-9-upgrade/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md build-system/agp/agp-9-upgrade/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md build-system/agp/agp-9-upgrade/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md build-system/agp/agp-9-upgrade/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md build-system/agp/agp-9-upgrade/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Explore alternatives and comparisons

Add this badge to your README

It updates every night and links to this page.

android/skills: #149 on hotskills, 10.4k stars

[![android/skills on hotskills](https://hotskills.dev/badge/android-skills.svg)](https://hotskills.dev/skill/android-skills/)