не удается связать тип файла с приложением Android - PullRequest
5 голосов
/ 18 октября 2011

Я пытаюсь связать свое приложение с определенным типом файлов (.stl). Рекомендация здесь от Кевина не имеет никакого эффекта. При попытке запустить файл из файлового менеджера мое приложение не предлагает один из предложенных вариантов.

Его код:

<activity name="com.mycompany.MyActivity">
    <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="application/pdf" />
    </intent-filter>
</activity>

(за исключением того, что у меня есть STL не PDF). Я перепробовал все варианты этой темы, которые смогу найти.

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

Большое спасибо за любые предложения.

EDIT:

У меня есть ответ. В основном вы должны заявить, что вы разрешаете любой старый mimetype и полагаетесь на расширение файла. Использование «правильного» mimetype (application / sla) не сработало. Это работает:

<data android:scheme="file" 
      android:mimeType="*/*" 
      android:pathPattern=".*\\.stl" />

Теперь, когда я выбираю файл в Astro, предлагается приложение, которое откроет файл такого типа.

1 Ответ

1 голос
/ 18 октября 2011

Я пытаюсь связать мое приложение с определенным типом файлов (.stl).

Как правило, Android не использует расширения файлов для указания типа.Android использует MIME-типы для указания типа.

При попытке запустить файл из файлового менеджера мое приложение не предлагает один из предложенных вариантов.

Ну,единственный гарантированный твердый ответ:

Шаг # 1: Определите тип MIME, с которым .stl файлы связаны с

Шаг # 2: Используйте этот тип MIME в элементе <activity>для атрибута android:mimeType

Шаг № 3: Вынудите каждого автора файлового менеджера реализовать поддержку для вашего типа MIME, когда они встречают .stl файлов

Шаг № 3, конечно жеЭто проблема.

Android, как iOS и другие операционные системы, отчаянно пытаются скрыть понятие «файлы» от пользователя.Вот почему в Android нет встроенного файлового менеджера, почему несколько устройств объединяют одно устройство и почему в ОС мало поддержки этой концепции.

Вы можете попробовать использовать <data android:scheme="file" android:pathPattern=".*\\.stl" /> в своем <data> элемент для поддержки вещей на основе расширения файла, хотя я не уверен, что это работает хорошо.Вам также может понадобиться android:host="*" в этом элементе - сам Android не использует pathPattern для схемы file, и сторонний код, который я изучаю, показывает этот элемент в обоих направлениях.Опять же, я понятия не имею, работает ли он.

...