Уникальная и всеобъемлющая глубокая ссылка

У меня достаточно простой вопрос, который я не могу найти решение. У меня есть приложение для Android с несколькими действиями. Я хочу сформировать конкретные глубокие ссылки на конкретные виды деятельности, а также направить все остальные глубокие ссылки на действия типа "универсальный".

Это мой манифест:

<activity
    android:name=".views.activity1">
    <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="domain"
            android:host="specificPlace" />
    </intent-filter>
</activity>

<activity
    android:name=".views.activity2">
    <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="domain"
            android:host="*" />
    </intent-filter>
</activity>

Итак, я хочу следующее:

domain://specificPlace -> глубокие ссылки на деятельность1.

domain:// -> глубокие ссылки на активность2

domain://random -> глубокие ссылки на активность2

domain://somewhereElse -> глубокие ссылки на активность2

Прямо сейчас домен:// что-то разрешается в активность2.

Любая помощь приветствуется, спасибо заранее!

1 ответ

Решение

<intent-filter> элемент поддерживает целое число priority атрибут По умолчанию это имеет значение 0Таким образом, вы можете установить отрицательный приоритет фильтра "catch-all", чтобы убедиться, что он работает после всех остальных:

<intent-filter android:priority="-1">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data
        android:scheme="domain"
        android:host="*" />
</intent-filter>

Я не пробовал это сам, но похоже, что это должно работать. Часть, в которой я не уверен, заключается в том, priority Атрибут обрабатывает отрицательные значения. Если этого не произойдет, вы можете вместо этого поставить положительный приоритет на все фильтры "не все":

<intent-filter android:priority="1">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data
        android:scheme="domain"
        android:host="specificPlace" />
</intent-filter>
Другие вопросы по тегам