Когда намерение соответствует intent-filter
, это требования intent-filter
: (представьте контрольный список).
- Любое совпадение
<action>
- Любое совпадение
<category>
- Любое совпадение
<data mimeType>
(легко исправить: " / ")
По желанию:
Определение нескольких элементов <data $type="">
проверяет поле $ type, если любое значение <data $type=>
соответствует Intent
.
Пропуск mimeType ломает ваш intent-filter
, даже если он кажется излишним. Пропуск <data scheme/host/pathPattern>
приводит к тому, что ваш фильтр соответствует всем.
https://f -droid.org / ru / packages / de.k3b.android.intentintercept / - приложение, разработанное для получения всех намерений и позволяющее вам проверить намерение. Я узнал, что нераспознанные расширения файлов, открытые через Simple File Manager, поставляются с MIME-типом application/octet-stream
.
https://stackoverflow.com/a/4621284/2683842 сообщает, что <data pathPattern=>
.*xyz
прерывается в первый x
, который он видит, и немедленно завершится ошибкой, если за ним не последует yz
. Так что /sdcard/.hidden/foo.0cc
не пройдет .*\\.0cc
, если вы не попробуете .*\\..*\\.0cc
.
- Я не проверял, нужен ли этот обходной путь.
Конечный результат:
<activity android:name=".Ft2NsfActivity">
<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="content" />
<data android:host="*" />
<data android:pathPattern=".*\\.ftm"/>
<data android:pathPattern=".*\\..*\\.ftm"/>
<data android:pathPattern=".*\\..*\\..*\\.ftm"/>
<data android:pathPattern=".*\\..*\\..*\\..*\\.ftm"/>
<data android:pathPattern=".*\\.0cc"/>
<data android:pathPattern=".*\\..*\\.0cc"/>
<data android:pathPattern=".*\\..*\\..*\\.0cc"/>
<data android:pathPattern=".*\\..*\\..*\\..*\\.0cc"/>
<data android:mimeType="*/*" />
</intent-filter>
</activity>