2011-10-18 4 views
5

내 앱을 특정 파일 형식 (.stl)과 연결하는 데 어려움을 겪고 있습니다. Kevin의 추천 here은 아무런 효과가 없습니다. 파일 관리자에서 파일을 실행하려고하면 내 앱이 제안 된 옵션 중 하나가 아닙니다.파일 형식을 android 앱과 연결할 수 없습니다.

그의 코드는 다음과 같습니다

<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를 제외하고). 내가 찾을 수있는이 테마의 모든 변형을 시도했습니다.

시스템에서 내 앱이 이러한 종류의 파일을 열 수 있음을 알지 못하는 것 같습니다. 바보 같은 짓하고있어?

의견을 보내 주셔서 감사합니다.

편집 :

나는 답을 가지고있다. 기본적으로 이전 MIME 형식을 허용하고 파일 확장명을 사용한다고 명시해야합니다. '올바른'mimetype (application/sla)을 사용하지 못했습니다. 작동 :

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

이제 Astro에서 파일을 선택하면 내 응용 프로그램이 이러한 종류의 파일을 열 것으로 제안됩니다.

답변

1

내 앱을 특정 파일 형식 (.stl)과 연결하는 데 어려움을 겪고 있습니다.

일반적으로 Android는 유형을 나타내는 파일 확장자를 사용하지 않습니다. Android는 MIME 유형을 사용하여 유형을 나타냅니다.

파일 관리자에서 파일을 실행하려고하면 내 앱이 제안 된 옵션 중 하나가 아닙니다.

음, 유일한 보장 - 고체 대답은 :

단계 # 1 : .stl 파일과 관련이 있다는 MIME 타입을 결정

단계 # 2 : <activity> 요소에 해당 MIME 유형을 사용 android:mimeType에 대한 속성

단계 # 3 : 그들은 .stl 파일을 발생할 때 대한 MIME 유형에 대한 지원을 구현하기 위해 각각의 모든 파일 관리자 저자 강제

물론 # 3 단계가 문제입니다.

Android는 iOS 및 다른 운영 체제처럼 "파일"이라는 개념을 사용자로부터 숨기려하고 있습니다. 이것이 안드로이드에 내장 된 파일 관리자가없는 이유입니다. 왜 디바이스가 하나 밖에 없는지, 왜 OS에이 개념을 거의 지원하지 않는지입니다.

<data> 요소에 <data android:scheme="file" android:pathPattern=".*\\.stl" /> 요소를 사용하여 파일 확장명을 기반으로하는 작업을 지원해도 좋지만 잘 작동하는지 확실하지 않습니다. 해당 요소에 android:host="*"이 필요합니다. Android 자체는 file 스키마에 pathPattern을 사용하지 않으며, 검토중인 제 3 자 코드는 요소를 두 가지 방법으로 보여줍니다. 다시, 나는 그것이 작동하는지 전혀 모른다.

'파일'에 안드로이드의 태도에 대한이
+0

감사 @CommonsWare, 유용한 정보 ... 또 다른 대답은 다른 곳에서 나를 제대로 HTTP 소스에서 파일을 잡아 수있는 버전을 가지고 있지만, 아직도 천체 (파일 관리자). 그러나, stl 파일을 선택할 때 제공되는 다른 stl 독자 ** **도 그렇게 할 수 있습니다. 나는 여전히 대답을 찾고 있어요 ... – Barry

+0

@Baz : 내 대답의 마지막 단락을 다시 읽어 보시기 바랍니다. – CommonsWare

+0

예, 죄송합니다, 저를 무시하는 말은하지 않았다, 나는 성공하지 이전에 그 라인을 시도했다, 그러나 나는 답을 발견했다! (이하). – Barry

관련 문제