Я использую фильтр намерений ниже, чтобы связать деятельность с тремя типами пользовательских расширений для схемы «файл»: .smmx, .smmstyle и .mmНамерение фильтра со схемой файла и pathPattern неправильно оценивает истинные
<activity blablabla>
<intent-filter>
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="*"
android:mimeType="application/octet-stream"
android:pathPattern=".*\\.smmx"
android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="*"
android:mimeType="application/octet-stream"
android:pathPattern=".*\\.mm"
android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="*"
android:mimeType="application/octet-stream"
android:pathPattern=".*\\.smmstyle"
android:scheme="file" />
</intent-filter>
</activity>
Проблема заключается в том, что при использовании с приложением Dropbox этот фильтр намерений ассоциирует действие практически с любым расширением. Например: при открытии файлов с расширениями * .mpb, * .adu - и многое другое - приложение dropbox запускает связанное с ним действие, хотя в имени файла нет совпадения для любого из указанных выше путей PathPattern в фильтре намерений. Кажется, что фильтр намерения ошибочно оценивает значение true.
Любая идея, что может быть причиной этого и как избежать ассоциирования с файлами, не предназначенными для моей деятельности?
После добавления андроида: host = "*" в каждую секцию данных, поведение действительно меняется. Действие больше не связано со всеми расширениями. Однако теперь он не всегда оценивается как совпадение. Например, это Uri не соответствует файл: ///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/Bright%20Orange%20Levels.smmstyle
Хотя другой файл с таким же расширением открытое из того же приложения, что и приложение, было согласовано ОК. Это происходит как на галактике GT-I9000, работающей под управлением Android 2.2, так и на Archos 80 G9. Андроид 3.2 Итак: намного лучше, но еще не идеально. Будут дальнейшие исследования.
Попробуйте добавить атрибут 'android: host'. – CommonsWare
Да, улучшает поведение много, но все еще не идеально. См. Мой измененный вопрос выше (я не знаю, так ли я должен реагировать?) –
Вы пробовали разные ** андроиды: параметры mimeType **? –