Има много примерен код, който използва 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="..." />
?