мое приложение может открывать следующие форматы файлов:Android Намерение фильтр не работает
- KML (приложение/vnd.google-earth.kml + XML)
- КМЗ (приложение/vnd.google-земля. КМЗ)
- GPX (приложение/GPX + XML)
Я пытаюсь настроить должным образом свои намерения фильтров, так что предлагаются мое приложение при попытке открыть один из этих типов файлов, с помощью следующих схем :
- HTTP
- HTTPS
- файл
- содержание
я ожидал бы следующий фильтр, чтобы поймать всех случаях (за исключением файлов с точками в имени, но это уже другая проблема):
<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="file" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="content" />
<data android:pathPattern=".*\\.kml" />
<data android:pathPattern=".*\\.kmz" />
<data android:pathPattern=".*\\.gpx" />
<data android:mimeType="application/vnd.google-earth.kml+xml" />
<data android:mimeType="application/vnd.google-earth.kmz" />
<data android:mimeType="application/gpx+xml" />
</intent-filter>
Но если файловый проводник не устанавливает надлежащим образом тип содержимого GPX, GPX файлы не распознаются (даже если они правильно названы, с расширением «.gpx»).
Кто-нибудь знает, в чем проблема?
Я бы установить это, как два фильтра. Один из них - «файл» и расширения. Другая - другие схемы и типы MIME. Например, если контент имеет правильный тип MIME, но в пути нет одного из этих расширений (как это редко бывает для 'content'), ваш фильтр не будет соответствовать. В общем случае расширения файлов являются наименее надежным подходом на Android. – CommonsWare
Спасибо! Я почти там, у меня есть кое-что, что, кажется, обрабатывает все случаи. Почему вы ограничиваете схему на 2 фильтрах? Почему бы не один фильтр для расширений и один для типов mime, как для всех схем? –
Ну, для 'http' и' https', тип MIME был бы более надежным IMHO. Для 'content' часто не существует расширения файла. Я склонен придерживаться подхода использования меньшего объема, который с меньшей вероятностью даст мне ошибочные результаты. Но, если вы хотите применить все четыре схемы в обоих фильтрах, это, вероятно, работает. – CommonsWare