Deep Link не работает на Android

avatar
mipnw
8 апреля 2018 в 00:47
8526
1
8

Я следую Создать глубокие ссылки на содержимое приложения в документации для разработчиков Android, чтобы создать прямую ссылку на действие в приложении Android.

Новый проект приложения, я указал действие точно так же, как в этом руководстве:

<activity
android:name="com.example.android.GizmosActivity"
android:label="@string/title_gizmos" >
<intent-filter android:label="@string/filter_view_http_gizmos">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
    <data android:scheme="http"
          android:host="www.example.com"
          android:pathPrefix="/gizmos" />
    <!-- note that the leading "/" is required for pathPrefix-->
</intent-filter>
<intent-filter android:label="@string/filter_view_example_gizmos">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- Accepts URIs that begin with "example://gizmos” -->
    <data android:scheme="example"
          android:host="gizmos" />
</intent-filter>
</activity>

При тестировании с помощью adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android все работает. ОС на телефоне запускает приложение.

Но когда я тестирую, перейдя в Chrome к example://gizmos, приложение не запускается, и Chrome просто выполняет поиск Google для этого URI. Почему не работает?

(Я использую эмулятор Android для Nexus 5X API 26).

Источник
Amjad Khan
8 апреля 2018 в 04:35
0

Можете ли вы удалить эти несколько тегов фильтра намерений в один и можете поместить в него несколько тегов данных?

mipnw
8 апреля 2018 в 05:09
1

Я мог бы, но, согласно ответу Бенджамина, это вряд ли поможет, если Chrome не будет следовать глубоким ссылкам, указанным в адресной строке. Мне нужно проверить это, разместив веб-страницу. Кроме того, в документации по глубоким ссылкам говорится, что объединение нескольких intentfilter в один с несколькими data имеет другое значение, ср. «Хотя в один и тот же фильтр можно включить несколько элементов <data>, важно создавать отдельные фильтры, если вы хотите объявить уникальные URL-адреса».

Ответы (1)

avatar
Jade
8 апреля 2018 в 01:40
9

Это вызвано тем, что Chrome не переходит по глубоким ссылкам, если вы вручную вводите их в адресную строку. Смотрите этот ответ для получения дополнительной информации.

Самый простой способ протестировать глубокую ссылку — ввести ссылку в приложение Android Messages. После того, как вы отправите сообщение, вы можете нажать на ссылку.

Вы также можете где-нибудь разместить страницу со своей ссылкой на контент.

mipnw
8 апреля 2018 в 05:25
2

Я пробовал приложение для сообщений, когда я отправляю себе URI со схемой http, ссылка активна и работает! По какой-то причине пример схемы внутри текстового сообщения не показывает интерактивную ссылку, поэтому я не смог протестировать этот example://gizmos, но у меня нет оснований полагать, что он не будет работать, когда http://www.example.com/gizmos работает нормально. Спасибо.!