Фильтрация интентов немного мутная тема. Ибо документация к ним мутная. Лучшее, что можно сделать при необходимости использовать фильтр, это почитать код фильтра.
После прочтения кода(api 19) несколько выводов в дополнение к гугловской документации.
Если в указана схема content или file, то обязательно надо указать mimeType="*/*".
<data android:mimeType="*/*" android:scheme="file" android:host="*" />
Если его не указать или указать пустой, то фильтр будет отрабатывать только на интентах с пустыми mime type, но обычно там что-то есть. Тут можно использовать и пустой хост android:host="" - для таких схем файлов он обычно приходит пустой.
Если фильтруем ссылки, то у них хост есть и это надо обработать.
Если используются кастомные схемы, то надо смотреть, что там может приходить... общее правило, если что-то не задано явно, а оно приходит, то фильтр не сработает.
Так как mimeType проверяется после файловых путей, то задание менее общей маски производительность не улучшит. То есть задавать ее емеет смысл только если оно действительно для чего-то надо.
Обработка расширений файлов. В текущей реализации PatternMatcher она отработает в единичных граничных случаях. Ибо у PatternMatcher
проблеммы. И решение, которое там приводят, либо отработает не всегда, либо будет отрабатывать ложно.