본문 바로가기

Android

[Android] 삼성 파일 브라우저에서 파일 오픈시 intent-filter가 동작하지 않을 때

1. 해결 방법

스택 오버 플로우에서 Intent-filter abnormal behavior with samsung file browser 질문에 대한 답변입니다.

<activity
        android:name=".ImportCollections"
        android:launchMode="singleTask"
        android:parentActivityName=".ManageCollections">
        <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:host="*"
                android:mimeType="*/*"
                android:pathPattern=".*\\.infi"
                android:scheme="http" />
            <data
                android:host="*"
                android:mimeType="*/*"
                android:pathPattern=".*\\.infi"
                android:scheme="https" />
            <data
                android:host="*"
                android:mimeType="*/*"
                android:pathPattern=".*\\.infi"
                android:scheme="content" />
            <data
                android:host="*"
                android:mimeType="*/*"
                android:pathPattern=".*\\.infi"
                android:scheme="file" />
        </intent-filter>
        <!-- MIME type matcher for .infi files coming from providers like gmail which hide the file extension -->
        <!-- 작성하지 않았던 intent-filter 부분 -->
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="application/infi" />
            <data android:mimeType="application/x-infi" />
            <data
                android:mimeType="application/octet-stream"
                android:scheme="content" />
            <data
                android:mimeType="application/zip"
                android:scheme="content" />
        </intent-filter>
    </activity>

2. 문제 이유

제 경우에는 두 개의 intent-filter 중 2번째를 넣지 않은 상태에서 동작하지 않는 문제가 있었습니다. 그 이유를 알아보니 Intent의 Data 'content://0@media/external/file/46'와 같은 형태로 오고 있었습니다.

pathPattern이 맞지 않기 때문에 동작하지 않았던 거죠. mimeType을 가지고 intent-filter를 추가로 작성해야 할 듯 합니다.

stackoverflow.com/questions/39205640/intent-filter-abnormal-behavior-with-samsung-file-browser

 

Intent-filter abnormal behavior with samsung file browser

I'm creating an intent filter for a specific extension (.infi) for my app. It works correctly with ES file explorer & Solid explorer. However when I open the file with Samsung default file expl...

stackoverflow.com