Почему Android не обрабатывает URL-адрес deeplink, в пути которого есть #

URL-адрес http://javaexample.com/#/topics является допустимым?

Я пытаюсь связать указанный выше URL-адрес в приложении, используя:

  <intent-filter android:label="@string/app_name">
            <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="javaexample.com"
                android:pathPrefix="/#/topics" />
        </intent-filter> 

но терминал бросает сообщение -

Действие не запущено, не удалось разрешить Intent { act=android.intent.action.VIEW dat=http://javaexample.com/< /а>...

URL-адрес http://javaexample.com/#/topics не является допустимым URL-адресом, если он имеет # в пути?


person Praveen    schedule 29.05.2017    source источник


Ответы (1)


# в URL указывает на начало фрагментного компонента, который нельзя использовать. для критериев глубоких ссылок. Несмотря на то, что вы структурировали фрагмент так, чтобы он выглядел как обычный URL-адрес для человеческого глаза, компьютер не читал его таким образом.

Вам нужно будет переформатировать URL-адреса, чтобы они не включали символы # перед путем.

person Alex Bauer    schedule 29.05.2017
comment
Одностраничное веб-приложение решает, какую часть/фрагмент отображать, на основе идентификатора фрагмента, который следует после #. Таким образом, глубокая ссылка из гиперссылки на веб-приложение или в браузере (если приложение не установлено на мобильном устройстве) будет работать правильно, но если приложение установлено на мобильном устройстве, как мы можем получить глубокую ссылку с тем же URL-адресом, имеющим # в пути. Должны ли мы предоставить альтернативный URL-адрес deeplink для мобильных устройств? Например, если мобильное приложение, то берет альтернативный URL-адрес, иначе использует основной URL-адрес? Как мы можем добиться альтернативной реализации URL? - person Praveen; 30.05.2017
comment
Да, это один из способов сделать это. Branch.io (полное раскрытие: я работаю в команде Branch) может помочь в этом, так как URL-адреса ваших прямых ссылок затем полностью отдельно от вашего веб-приложения. Вы также можете переработать свое веб-приложение, чтобы использовать другую структуру URL. Подробнее о том, почему # не работает, см. здесь. - person Alex Bauer; 30.05.2017