2012-01-18 4 views
1

Мои манифеста:Android Ассоциации файлов

<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="http" android:host="*" android:pathPattern=".*mht" /> 
    <data android:scheme="https" android:host="*" android:pathPattern=".*mht" /> 
</intent-filter> 
<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:mimeType="message/rfc822" android:scheme="http" /> 
    <data android:mimeType="multipart/related" android:scheme="http" /> 
    <data android:mimeType="message/rfc822" android:scheme="https" /> 
    <data android:mimeType="multipart/related" android:scheme="https" /> 
</intent-filter> 

Результаты:

Очень любопытно, нет? Что я здесь делаю неправильно? Точно так же, как странно - мой манифест:

<intent-filter 
    android:icon='@drawable/ic_launcher' 
     android:label='AndroidMHT File' 
    android:priority='1'> 
    <action android:name="android.intent.action.VIEW" /> 
    <action android:name="android.intent.action.EDIT" /> 
    <action android:name="android.intent.action.PICK" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:scheme="file" /> 
    <data android:scheme="content" /> 
    <data android:mimeType="*/*" /> 
    <data android:pathPattern=".*\\.mht" /> 
    <data android:host="*" /> 
</intent-filter> 

Результаты:

  • /mnt/SDCARD/Android/data/com.mht/files/flipie.mht < --- Chooser не отображает мой программа в качестве опции
  • /mnt/SDCARD/Android/data/com.mht/files/keepme.mht < --- палитра показывает мою программу в качестве опции

Я нахожусь на концах йоту. Любая помощь очень ценится.

+0

Хорошо, используя отклик здесь htt p: //stackoverflow.com/questions/4675257/custom-filetype-in-android-not-working Я смог получить вторую часть (часть файловой системы SDCARD). Но первая часть, часть HTTP не работает. –

ответ

6

Предложения в первый ответ здесь помог мне: Android intent filter: associate app with file extension

Это мой новый манифест, для тех, кто может извлечь из этого пользу:

<intent-filter 
    android:icon='@drawable/ic_launcher' 
     android:label='AndroidMHT File' 
    android:priority='1'> 
    <action android:name="android.intent.action.VIEW" /> 
    <action android:name="android.intent.action.EDIT" /> 
    <action android:name="android.intent.action.PICK" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:mimeType="*/*" /> 
    <data android:pathPattern="*.mht" /> 
</intent-filter> 
<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="http" android:host="*" android:pathPattern=".*\\.mht" /> 
    <data android:scheme="https" android:host="*" android:pathPattern=".*\\.mht" /> 
</intent-filter> 
<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:mimeType="message/rfc822" android:scheme="http" /> 
    <data android:mimeType="multipart/related" android:scheme="http" /> 
    <data android:mimeType="message/rfc822" android:scheme="https" /> 
    <data android:mimeType="multipart/related" android:scheme="https" /> 
</intent-filter> 
+0

Спасибо alot @Authman .. Я пытаюсь сделать то же самое, много исследовать и попробовать сотни фильтров Intent, но, наконец, ваш код работает. Спасибо большое! – Kanika

+0

=) Добро пожаловать. –

0

При получении файлов со своего веб-сайта вы можете проверить, какие типы содержимого находятся в двух файлах? Я бы ожидал другого поведения, если бы они показывали другой тип (возможно, веб-сервер интерпретирует данные и видит разные триггеры в каждом файле).

Я проверил заголовки на http://web-sniffer.net/, а второй файл больше не существует, поэтому я не могу сравнивать.

Еще одна морщина, которая может повлиять на вещи - если вы не настроите пользовательский агент на то, что будут использовать ваши устройства Android, вы можете получить другой результат в своем браузере рабочего стола или веб-сниффере.

Не уверен, что это является причиной вашей проблемы, но стоит проверить.

+0

Извините. Я просто вернул второй файл. Я нажимаю на ссылки с клиента GMail Android, поэтому я не уверен, проверяет ли он заголовки, прежде чем уволить намерения. Но, например, если я скопирую keepme.mht на свою SD-карту и дважды щелкните по ней, это даст мне контекстное меню. Но тот же keepme.mht на веб-ссылке не делает (я сравнил содержимое файла dl'd и оригинала, и они были идентичны) –

+1

Хмм. Возможно, браузер выполняет некоторую проверку и решает, какой тип содержимого является данными.Я вижу, что в двух файлах используется другая кодировка, которая может быть связана. Второй файл также имеет некоторые дополнительные строки вверху. Возможно, вам нужно будет провести какое-то расследование, чтобы узнать, какой тип он обрабатывает как второй файл, и добавить фильтр для его захвата. – ProjectJourneyman

0

Вы можете попытаться изменить ниже атрибуты

android:mimeType="text/*" 
android:pathPattern="*.mht" 

к вашему намеренному фильтру