2013-08-12 2 views
0

У меня есть приложение с пользовательским расширением (скажем, .abc), mimeType которого я не знаю. Я хотел бы открыть это приложение, используя мое приложение для Android. Я попытался добавить код в манифест, но это, похоже, не помогло. Я пошел через несколько постов переполнения стека, но никто не похож на работу, и те, которые также подвергать мое приложение с другими расширениями, а не только .abcКак открыть пользовательское приложение с помощью приложения для 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:mimeType="*/*" /> 
      <data android:pathPattern="*.*\\.abc" /> 
      <data android:host="*"/> 
     </intent-filter> 
+1

Вы смотрели на этот вопрос? http://stackoverflow.com/questions/7030832/associating-certain-file-extension-to-my-android-application – Muzikant

ответ

3

Там в отверстии * в вашем pathPattern. Любая причина для этого? Это не должно быть ведущим персонажем, поскольку он влияет только на предыдущий символ.

От Android docs:

  • Звездочка ('*') совпадает с последовательностью 0 до многих вхождений непосредственно предшествующего символа.

  • Период, за которым следует звездочка (". *"), Соответствует любой последовательности от 0 до многих символов.

Вы также можете добавить android:scheme элемент. Из того же раздела, что и выше:

Эти атрибуты имеют смысл только в том случае, если для фильтра также указаны атрибуты схемы и хоста.

Кроме того, здесь есть near duplicate, который вы можете прочитать, с широко принятым ответом.

+0

Hey tnks. Проблема заключается в том, что шаблон пути применяется только к файлам, хранящимся на локальном хранилище. Кроме того, если не указан указанный mimeType, он также доступен для других приложений. – lokoko

+0

Путь шаблона не различает локальный/удаленный. Удалите ведущий '*' и он должен соответствовать чему-либо, оканчивающемуся на «.abc» (если у него нет промежуточного '.', Что является неудачной реализацией 'PatternMatcher' android. Что касается «доступного для других приложений», я не уверен, что вы имеете в виду. Вы пытаетесь сделать так, чтобы ваше приложение было * единственным * приложением, которое может открыть определенный тип файла? Если это так, это не сработает. Система намерений не работает. – Geobits

+0

* Схема *, используемая в другом ответе, - это то, что отличает местный и удаленный, кстати. – Geobits

0

Вы должны указать android:scheme

<activity> 
    <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:mimeType="*/*" /> 
     <data android:pathPattern=".*abc" /> 
     <data android:pathPattern=".*\\.abc" /> <!-- path includes one '.' --> 
     <data android:pathPattern=".*\\..*\\.abc" /> <!-- path includes two '.' --> 
     <data android:pathPattern=".*\\..*\\..*\\.abc" /> <!-- path includes three '.' --> 
     <!-- repeat as long as you want --> 
    </intent-filter> 
</activity> 
+1

Что случилось с моим ответом? Он отлично работает в моих приложениях. – flx

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