2013-08-12 2 views
0

mimeType을 인식하지 못하는 사용자 정의 확장 프로그램 (.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

만이 .abc 아닌 pathPattern의 구멍 *있다. 그 이유가 뭐야? 선행 문자에만 영향을주기 때문에 리드 문자가되어서는 안됩니다. Android docs에서

:

  • 별표 ('*')는 바로 앞의 문자가 0 번 이상 발생하는 것을 순서와 일치합니다.

  • 별표 (". *") 다음에 오는 마침표는 0에서 여러 문자의 모든 시퀀스와 일치합니다.

당신은 또한 android:scheme 요소를 추가 할 수 있습니다. 위와 동일한 섹션에서 :

이러한 속성은 구성표와 호스트 속성도 필터에 지정된 경우에만 의미가 있습니다.

또한, 여기에 널리 허용 대답과 함께, 당신은을 통해 읽을 수있는 near duplicate입니다.

+0

안녕하세요. 문제는 경로 패턴이 로컬 저장소에 저장된 파일에만 적용된다는 것입니다. 또한 지정된 mimeType이 없으면 다른 응용 프로그램에서도 액세스 할 수 있습니다. – lokoko

+0

경로 패턴은 로컬/원격을 구분하지 않습니다. 맨 앞의'*'를 제거하면 안드로이드의'PatternMatcher'의 불행한 구현 인 중간 '.'이없는 한 ".abc"로 끝나는 것과 일치해야합니다. "다른 앱으로 액세스 할 수 있음"과 관련하여 나는 당신이 의미하는 바를 잘 모릅니다. 앱이 특정 파일 형식을 열 수있는 * 전용 * 앱이되도록 만들려고하십니까? 그렇다면 작동하지 않습니다. 의도 시스템이 그런 식으로 작동하지 않습니다. – Geobits

+0

다른 답변에서 사용 된 * scheme *은 로컬과 원격을 구분하는 것입니다. btw. – 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

관련 문제