Как использовать PathPattern для создания Android приложений DeepLink? - PullRequest
0 голосов
/ 21 сентября 2018

Я прочитал документацию о создании диплинка и использовании сервиса связывания приложений в Android Studio 3.0.это довольно просто и легко понять, но у меня есть небольшая проблема, когда у моего URL нет префиксного пути.пример:

https://example.com//amp

нет префикса, это непосредственно шаблон URL.когда я использую регулярное выражение

^ [a-z0-9] + (?: - [a-z0-9] +) * $

это не работает,ошибка, отображаемая как

URL-адрес не сопоставляется с какой-либо деятельностью

, когда я использую только звездочку, например:

https://example.com/*/amp

его шоу кажутся ошибкой.Я застрял в этом шаге, я проверил много уроков о deeplink, и там всегда использовать pathPrefix вместо pathPattern.

пожалуйста, кто-нибудь, помогите мне.Большое спасибо

1 Ответ

0 голосов
/ 21 сентября 2018

Это общий недостаток в глубоких ссылках Android, который поддерживает только символы регулярного выражения * и ..Это упомянуто в Adnroid документах и можно наблюдать в исходном коде .

Из документов

Для получения дополнительной информации об этих трех типахшаблоны, см. описания PATTERN_LITERAL, PATTERN_PREFIX и PATTERN_SIMPLE_GLOB в классе PatternMatcher.

PATTERN_SIMPLE_GLOB предназначен для регулярных выражений и говорит только о совпадении

/ ** *Тип шаблона: данный шаблон интерпретируется с помощью * простого синтаксиса glob для сопоставления со строкой, с которой он проверен.* В этом синтаксисе вы можете использовать символ '*', чтобы сопоставить ноль или * больше вхождений символа непосредственно перед ним.Если символ * перед ним '.', он будет соответствовать любому символу.Символ * '\' может быть использован как побег.По сути, это обеспечивает только часть подстановочного знака '*' * в обычном регулярном выражении.* /

public static final int PATTERN_SIMPLE_GLOB = 2;

Таким образом, допускаются только *, . и \.Использование другого литерала шаблона +,? и т. Д .;приведет к ошибке.

Либо вы можете использовать свой рабочий параметр, либо вы можете использовать

https://example.com/./....*

....* как минимум 3 символа, тогда .* означает 0 или более символов

<activity
    android:name="packagename.ActivityName" >
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPattern="/./....*" />
        <!-- note that the leading "/" is required for pathPrefix-->
    </intent-filter>
</activity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...