Example:
<data android:pathPattern="/user/*/settings" /> Matches /user/john/settings but /user//settings . 3. URL Encoding Matters If your actual URL contains encoded characters (e.g., %20 for space), PathPattern matches against the decoded path. So if you expect a space, match it as a literal space, not %20 . 4. No Regex Character Classes You cannot use [0-9] , \d , + , ? , etc. The pattern language is intentionally minimal. 5. Query Parameters and Fragments are Ignored PathPattern only looks at the path portion of the URL. Query parameters ( ?key=value ) and fragments ( #section ) are not considered.
Wait — that’s confusing. Let's clarify.
In this article, we’ll break down how PathPattern works, when to use it, and how to avoid its most common pitfalls. PathPattern is an attribute used within an intent filter’s <data> tag. It allows you to match a subset of a URL’s path using simple wildcard expressions.
| Symbol | Meaning | |--------|---------| | * | Matches zero or more occurrences of the preceding character (but be careful – see below). | | .* | Matches any sequence of characters, including an empty sequence. |
<!-- Wrong --> <data android:pathPattern="user/*" /> <!-- Correct --> <data android:pathPattern="/user/*" /> Unlike regex .* , pathPattern ’s * requires at least one character. For example:
In most regex engines, * means "zero or more of the previous character". But in PathPattern , the * acts like a greedy wildcard that matches any sequence of characters .