Тень и высокие строки в Uri перенаправляют напрямую в браузер в Android

У меня есть следующий фильтр намерений:

        <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:host="myghost.com"
                android:pathPattern=".*\.html"
                android:scheme="http" />
        </intent-filter>

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

Кто-нибудь знает другие волшебные слова, которые работают таким же образом>

Есть ли возможность отключить такое поведение?


person pixel    schedule 13.05.2014    source источник
comment
Вы пытались воспроизвести это на другом устройстве?   -  person interlude    schedule 13.05.2014
comment
Вы можете воспроизвести его на любом устройстве (Nexus, Samsung, Genymotion и т. д.)   -  person pixel    schedule 13.05.2014
comment
@interlude Вам удалось это воспроизвести?   -  person pixel    schedule 15.05.2014


Ответы (1)


Проблема связана с экранированием символа '.'.

Изменить android:pathPattern=".*\.html" на android:pathPattern=".*\\.html"

'\' используется как escape-символ, когда строка читается из XML. Вам нужно будет дважды экранировать его, т.е. буквальное '.' будет '\\.'

person Manish Mulimani    schedule 16.05.2014
comment
Но почему были затронуты только shadow и high слова? - person pixel; 19.05.2014
comment
Поскольку \. не является допустимой escape-последовательностью, возможно, синтаксический анализатор XML удалит ее, и шаблон будет .*html, что указывает на соответствие любому символу до первого вхождения буквы h. После этого он ожидает букву t. В shadow следующий символ — a, а в high следующий символ — i, поэтому сопоставление с образцом не удается. У меня есть подробный ответ для сопоставления шаблонов здесь, который может вам помочь. - person Manish Mulimani; 09.09.2014