DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
Mountain View desk5 min

How to Debug Android Intent Handling in an App

A practical guide to tracing Android intent resolution, testing implicit launches with ADB, checking App Link verification, and diagnosing deep-link handlers by Android version.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To find out why an Android intent launches the wrong activity—or why a deep link opens in a browser—capture the complete intent, check the installed app’s merged manifest, and reproduce the same launch with ADB. Implicit activity launches must match an eligible filter’s action, data, and categories; App Links add domain-verification requirements. The commands and resolver diagnostics available depend on the device’s Android version.

Why isn’t my Android intent opening the right activity?

An implicit intent does not name its destination activity. Android searches for an eligible activity by matching the intent against manifest filters. The action, data, and categories all matter; Android describes this three-part comparison in its intent and intent filter documentation.

Capture the complete intent

Record the intent at the point it is created and, if an activity receives it, at the point of receipt. Include:

  • Action and data URI.
  • MIME type, if present.
  • Categories, extras, and flags.
  • Any package or explicit component restriction.

A visible URL is not the whole intent: data can be paired with a MIME type. An explicit component names a destination and bypasses ordinary implicit filter resolution, so distinguish that launch path from one that relies on filters.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check the installed build’s merged manifest

Inspect the merged manifest for the build actually installed on the device, not just a source manifest. For each candidate activity, compare the filter with the captured intent:

  • Action: confirm the spelling and that the filter declares the action being sent.
  • Categories: an implicit activity launch requires a filter that includes CATEGORY_DEFAULT. Browser-facing links also need CATEGORY_BROWSABLE.
  • Data: check the specified scheme, host, port, path, and MIME type against the intent. An omitted host or path constraint can make a filter match more broadly than intended.

Check every filter on the activity: failure to match one filter does not rule out another. Also remember that filters are not a security boundary—another app that knows a component’s name may explicitly start it. Android advises using explicit intents to start services. See the official intent-filter guidance.

How do I test an Android intent with adb?

Use an installed build on either a physical device or an emulator. ADB lets you reproduce the launch separately from the app’s own navigation logic; Android documents the general activity-start syntax in its ADB documentation.

Reproduce an implicit activity launch

Replace the placeholders with the action, MIME type, and data used in the failing case:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
adb shell am start -W -a <ACTION> -t <MIME_TYPE> -d <DATA>

For an extra, add -e <EXTRA_NAME> <EXTRA_VALUE>. To target a named component explicitly, add -n <PACKAGE>/<ACTIVITY>. Compare the explicit launch with the implicit one only when it helps isolate the issue: explicit targeting can test component startup and subsequent intent processing, but it does not show how Android resolves an implicit intent.

Reproduce a deep link

Use the URI that matters to the case:

adb shell am start -W -a android.intent.action.VIEW -d "https://your-domain.example/path"

Check which activity launches, then inspect app-side diagnostics to confirm the received action and URI. A successful activity launch does not establish that the app’s navigation code consumed the URI or displayed the expected content.

Why does my Android App Link open in the browser?

App Links rely on both an eligible manifest filter and a verified association between the app and the website. Android’s App Links verification guide describes the requirements and the per-domain verification process.

Check the filter and website association

An App Link verification filter uses the VIEW action, both BROWSABLE and DEFAULT categories, and an HTTP or HTTPS scheme. Android requests https://<host>/.well-known/assetlinks.json for each host. Check that the file is valid JSON, is served over HTTPS without redirects, and contains the SHA-256 fingerprint for the app’s signing certificate. If the app is distributed through Google Play App Signing, use the Play app-signing certificate fingerprint rather than assuming the upload certificate is the relevant one. See the asset links configuration guide.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

On Android 12 and later, reset and request verification, then inspect the result:

adb shell pm set-app-links --package <PACKAGE_NAME> 0 all
adb shell pm verify-app-links --re-verify <PACKAGE_NAME>
adb shell pm get-app-links <PACKAGE_NAME>

The device needs internet access. Allow a few minutes for verification to finish before checking the output. A successful domain is reported as verified; none can mean verification is still pending.

Trace redirects and user choices

If the browser still opens the link, check whether the server redirects the URL, including HTTP-to-HTTPS or apex-to-www redirects; whether the manifest’s host and path scope covers the URL; and whether the asset links file has the correct certificate fingerprint. Also check whether the device has a user-selected default link handler. These checks can distinguish a domain-association problem from a mismatch between the tested URL and the app’s declared scope.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How can I see which app will handle this deep link?

On Android 17, ADB’s --debug-link option provides link-resolution diagnostics. Run it on a device with Android 17:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
adb shell am start --debug-link -a android.intent.action.VIEW -d "https://your-domain.example/path"

The output can identify candidate packages and activities, matched manifest attributes, App Link verification state, and Dynamic App Link rules. Dynamic rules are ordered: the first matching rule takes precedence, so check exclusions as well as allows. See Android’s App Links debugging documentation.

--debug-link is Android 17-specific, not a universal command for older devices. On Android 12 and later, use pm get-app-links to inspect verification state; use the ADB launch command to reproduce the URI and compare the result on the device’s actual Android version. A physical device and an emulator can both run ADB intent tests; use a physical test device when the failure appears specific to a device or installation.

How do I make the failure reproducible?

Keep the resolution test tied to the intent the app really sends. Change categories or add an explicit component only as a deliberate comparison, not as a substitute for reproducing the failing path. Compare a URI expected to match with a near-miss URI to expose overly broad or overly narrow filter rules.

Save the Android version, installed app build and signing variant, exact ADB command, resolver output, verification state, and URI received by the app together. That record makes it possible to compare behavior across builds and platform versions without confusing filter resolution with app-side routing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Shenzhen desk3 min
    HONOR Expands Beyond Smartphones With Humanoid Robot RevealHONOR said it unveiled its first humanoid robot at MWC 2026 and named shopping assistance, workplace inspections, and supportive companionship as intended uses. Later Robotics D1 claims and a reported…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.