2013-12-18 3 views
1

У меня есть следующие намерения фильтр в моей AndroidManifest.xml, который работает отлично в Android 2.xx и не делает ничего в Android 4.xx:Как изменился фильтр намерений с Android 2 на Android 4?

<intent-filter 
    android:icon="@drawable/ic_fx_603p_pf" 
    android:label="FX-603P Program File" 
    android:priority="1" 
    > 
    <category 
     android:name="android.intent.category.DEFAULT" 
    ></category> 
    <action 
     android:name="android.intent.action.VIEW" 
    ></action> 
    <data 
     android:host="*" 
     android:pathPattern=".*\\.pf" 
     android:scheme="file" 
    ></data> 
    </intent-filter> 

Вопрос: Что есть изменения и как могу ли я снова сделать намерение?

Ожидаемое поведение: при выборе файла с расширением *.pf в файловом менеджере (например, Astro) мое приложение должно быть запущено и файл должен быть открыт. Кроме того, файловый менеджер должен использовать предоставленный значок для визуализации файла.

ответ

0

Ну после некоторых экспериментов я узнал, что android:mimeType не является обязательным. Поэтому решение:

<intent-filter 
    android:icon="@drawable/ic_fx_602p_pf" 
    android:label="FX-602P Program File" 
    android:priority="1" 
    > 
    <category 
     android:name="android.intent.category.DEFAULT" 
    ></category> 
    <action 
     android:name="android.intent.action.VIEW" 
    ></action> 
    <data 
     android:host="" 
     android:mimeType="*/*" 
     android:pathPattern=".*\\.pf" 
     android:scheme="file" 
    ></data> 
    <data 
     android:host="*" 
     android:mimeType="application/x-fx-602p.program" 
    ></data> 
    </intent-filter> 

Как немного больше, я узнал, что <intent-filter> может иметь две руды более <data> тегов. Если либо совпадают с назначением (логическое ИЛИ)

Внутри тега все атрибуты должны соответствовать (логическое И).

Однако есть проблема с этим решением. Кажется, в Android 2.x есть ошибка, и атрибуты <data> строго не обрабатываются логически и приводят к тому, что все файлы сопоставляются, когда установлен атрибут android:mimeType. Ах, хорошо, вы не можете иметь это в обоих направлениях и пойдет с будущим, если это так.

+0

Это неправильно. На моем телефоне (Nexus 5X Android 7): соответствует всем файлам:/, –

Смежные вопросы