Android Intent-Filter для http-адреса

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

Вот 2 типа ссылок, которые я хочу перехватить

  1. http://www.domain.com/#id=abcdef123346
  2. http://www.domain.com/social/landing/abcdef123456

Я уже решил иметь отдельную активность для перехвата обеих ссылок и использовать java regex для запуска правильной активности. Однако я не могу захватить только эти два формата без захвата чего-то вроде http://www.domain.com/abc123

<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="http"
                android:host="www.domain.com"
                android:pathPattern="/#id.*" />
        </intent-filter>

Это то, что я сейчас пытаюсь перехватить типа 1, и по какой-то причине это не работает.

Этот фильтр намерений правильно перехватывает тип 2

<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="http" />
            <data android:host="domain.com" />
            <data android:host="www.domain.com" />
            <data android:pathPrefix="/share/web" />
            <data android:pathPrefix="/social/landing" />
        </intent-filter>

Спасибо,


person Leo    schedule 30.05.2011    source источник
comment
Эй, @leo, я хочу добиться того же, я просто хочу открыть свое приложение, когда пользователь запускает мобильный сайт из браузера, я сделал то же самое здесь, но это не помогает?   -  person Antwan    schedule 23.05.2016


Ответы (1)


Я думаю, что строка, которой соответствует pathPattern, - это "/", а "#id..." опущена, потому что она является частью фрагмента. Если вместо этого вы использовали http://www.domain.com/id/abcdef123456, pathPattern может соответствовать "/id/.*", потому что это часть пути.

person user775598    schedule 30.05.2011
comment
Это, безусловно, возможно, но требует изменения поведения сервера, и я надеялся, что этого делать не придется. Любые другие возможности? - person Leo; 31.05.2011
comment
Я не вижу никаких вариантов для pathFragment. Не могли бы вы просто поймать все, что идет в /, и получить идентификатор позже? - person user775598; 31.05.2011
comment
К сожалению, если я перехватлю все ссылки, в которых есть косая черта, я остановлю разрешение своих коротких URL-адресов и не смогу выяснить, какова была фактическая цель. - person Leo; 31.05.2011
comment
Я пошел с этим решением, так как не смог найти другого пути. Спасибо. - person Leo; 31.05.2011
comment
Это поведение, которое вы должны ожидать. Фрагмент (все после #) не идентифицирует ресурс, который вы хотите получить: это дополнительные данные, которые должны интерпретироваться клиентом/браузером. Извлекаемый ресурс должен однозначно идентифицироваться остальной частью URL-адреса. - person Dan Hulme; 09.05.2013