Приложение Android открывается из ссылок, отправленных по электронной почте

Наши пользователи время от времени получают электронные письма, например. измените свой пароль. Когда они нажмут на ссылку, я бы хотел, чтобы они были отправлены на наш сайт, но наше приложение для Android открывается.

Ссылка, например. https://www.ourdomain.com/change-password/{random-string}.

У нас есть глубокие ссылки, включенные в нашем приложении, но они настроены следующим образом:

            <intent-filter android:label="...">
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="customhost"
                android:pathPrefix="/"
                android:scheme="https" />

            <data
                android:host="www.ourdomain.com"
                android:pathPrefix="/somethingelse"
                android:scheme="https" />

            <data
                android:host="www.ourdomain.com"
                android:pathPrefix="/againsomethingelse"
                android:scheme="https" />

            <data
                android:host="someothercustomhost"
                android:scheme="https" />

            <data
                android:host="andagainacustomhost"
                android:scheme="https" />
        </intent-filter>

Итак, часть change-password не подходит ни в одной из этих конфигураций, что может быть причиной открытия нашего приложения?

ИЗМЕНИТЬ

кажется, что проблема - это первый data -tag; если я прокомментирую это, он будет вести себя так, как ожидалось (т.е. https://www.ourdomain.com/change-password/1234 не обрабатывается приложением). Я не знаю, почему, поскольку customhost - это совершенно другое слово из www.ourdomain.com...

Ответы

Ответ 1

Вы можете попробовать разделить его на разные компоненты <intent-filter>, потому что с одним приложением <intent-filter> можно запутаться, даже если оно написано правильно.

<intent-filter android:label="...">
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />           

    <data android:host="www.ourdomain.com"
        android:pathPrefix="/somethingelse"
        android:scheme="https" />

    <data android:host="www.ourdomain.com"
        android:pathPrefix="/againsomethingelse"
        android:scheme="https" />
</intent-filter>

<intent-filter android:label="...">
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:host="customhost"
        android:pathPrefix="/"
        android:scheme="https" />
</intent-filter>

<intent-filter android:label="...">
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:host="someothercustomhost"
        android:scheme="https" />
</intent-filter>

<intent-filter android:label="...">
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:host="andagainacustomhost"
        android:scheme="https" />
</intent-filter>