Работят ли филтрите за намерение тип mime на HTTP URL адреси?

Има много примерен код, който използва IntentFilter със схема от "http" и набора mimeType. Вижте отговорите на Работа с MIME тип, който е резултат от POST на браузър в Android, Филтър за намерения за сърфиране в XML (по-специално rss) в android и Как да отворя приложението си за Android, когато rss връзката е отворена в браузъра?

Конкретният случай на употреба, който имам, е за RSS връзки, като последните два въпроса, но RSS емисиите, които искам да прихвана, нямат път, който мога да съпоставя полезно с pathPattern, и нямам контрол върху това. Опитах да използвам същия филтър за намерения, който първоначално беше извлечен от APK на Google Reader:

    <intent-filter android:label="@string/NewURL_intent_rss">
        <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="*" />
        <data android:mimeType="text/xml"/>
        <data android:mimeType="application/rss+xml" />
        <data android:mimeType="application/atom+xml"/>
        <data android:mimeType="application/xml"/>
    </intent-filter>

но когато тествам това, като щракна върху връзка в Chrome, която сочи към такъв файл, Chrome просто преглежда този файл. Имам инсталиран Google Reader и това също не отговаря на намерението. Ако заменя mimeType редовете с pathPattern, който съответства на тестовия URL адрес, приложението ми получава намерението. Като изпратих HEAD заявки към сървъра, проверих дали Content-Type на URL адреса се изпраща като „application/xml“. Тестовото устройство е Nexus 10 на стандартния ROM.

Направих друг тест, като възстанових филтрите mimeType и стартирах URL адреса от am start в обвивка. Тази команда, указваща само URL адреса,

am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d http://my.test/url

стартира браузъра, но когато посочих изрично типа в тази команда,

am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -t application/xml -d http://my.test/url

показа ми инструмент за избор на намерения за моето приложение и Google Reader. Това изглежда потвърждава, че филтърът влиза в сила, но Chrome стартира намерението, без да предоставя тип, а преобразувателят на намерения не намира типа от URL адреса (както прави за content: URI), но изглежда неправдоподобно, че толкова много хора може да използват и препоръчват филтри за намерения, които не могат да работят. Някой има ли окончателен отговор: каква е ползата от филтър за намерения с <data android:scheme="http" android:mimeType="..." />?


person Dan Hulme    schedule 09.05.2013    source източник


Отговори (1)


Според друг отговор на StackOverflow, браузърът проверява заглавката Content-Disposition и дори не проверява филтрите за намерения, ако показва прикачен файл.

Възможно ли е това да е проблемът, с който се сблъсквате?

https://stackoverflow.com/a/8770360/304876

person Pierre-Luc Paour    schedule 10.07.2013
comment
Отговорът, към който се свързвате, е някой, който се досеща, че това се случва. Определено не е в този случай: RSS файловете не идват със заглавката Content-Disposition: attachment. - person Dan Hulme; 10.07.2013