Android - Глубокая ссылка с похожими URL - PullRequest
1 голос
/ 02 апреля 2019

Я глубоко соединяюсь (использую джетпак навигацию) и логика работает.Проблема, с которой я сталкиваюсь, заключается в том, что логика для activity_discover_detail , кажется, блокирует логику для frag_discover_landing

Как бы я мог предотвратить это?

Вот активность и фрагмент из моего навигационного графа:

 <fragment
        android:id="@+id/fragment_discover_landing"
        android:name="com.my.app.fragments.DiscoverLandingFragment"
        android:label="@string/nav_discover_landing"
        tools:layout="@layout/discover_landing_fragment">

        <action
            android:id="@+id/fragment_discover_landing_back_action"
            app:popUpTo="@id/fragment_reading_lists"
            app:popUpToInclusive="false" />
        <argument
            android:name="category"
            android:defaultValue="Latest"
            app:argType="string" />
        <argument
            android:name="searchText"
            app:argType="string" />
        <argument
            android:name="searchMode"
            android:defaultValue="false"
            app:argType="boolean" />
        <deepLink
            android:id="@+id/discover_landing_category"
            app:uri="myAppName://discover/category?name={category}" />
    </fragment>

    <activity
        android:id="@+id/activity_discover_detail"
        android:name="com.my.app.activities.DiscoverDetailActivity"
        tools:layout="@layout/activity_discover_detail">

        <argument
            android:name="already_handled"
            android:defaultValue="true"
            app:argType="boolean" />
        <deepLink
            android:id="@+id/in_app_sell_page"
            app:uri="myAppName://discover/{contentId}" />
    </activity>

1 Ответ

0 голосов
/ 02 апреля 2019

Я думаю, что это происходит из-за того, что myAppName://discover/{contentId} является более общим и содержит myAppName://discover/category?name={category}.

В общем, вам нужно сделать свою деятельность «управляемой» более конкретной, чтобы не затенять фрагмент.

может быть, ссылка, подобная этой, сработает: myAppName://discover/detail/{contentId}

Также я не знаком с глубокой связью нового Навигационного компонента, но не вижу в вашем коде, гдеВы определяете переменную contentId, что определено в DiscoverDetailActivity область действия already_handled, я не знаю, нормально ли это.

РЕДАКТИРОВАТЬ

Если выя не имею контроля над форматами ссылок, я бы посоветовал иметь единую точку входа для глубоких ссылок в вашем графике навигации, чем делать правильный анализ, отображение и перенаправление.это будет прозрачное действие LinkDispatcherActivity, которое перехватывает все ссылки вашего приложения, вы можете использовать .* подстановочный знак для определения ваших ссылок: этот <deepLink app:uri="myAppHost://myAppScheme/.*"/> будет соответствовать и перехватывать все ссылки, начиная с myAppHost://myAppScheme.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...