ActivityNotFoundException - Фильтр намерений больше не работает

У меня есть приложение, которое хочет обрабатывать файлы SGF. У него есть эти фильтры в манифесте:

        <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="http"/>
            <data android:host="*"/>
            <data android:pathPattern=".*\\.sgf"/>
        </intent-filter>
        <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="http"/>
            <data android:mimeType="application/x-go-sgf"/>
        </intent-filter>
        <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:mimeType="*/*" />
            <data android:host="*" />
            <data android:pathPattern=".*\\.sgf"/>
        </intent-filter>

Идея состоит в том, чтобы обрабатывать файлы SGF, открытые в браузере или из файла. Это работало до недавнего времени. Я точно не знаю, когда он перестал работать, но не из-за изменения кода. У меня есть другое приложение, которое пытается запустить действие, и оно получает исключение:

Не найдено действий для обработки Intent {act=android.intent.action.VIEW dat=file:///mnt/sdcard/gogrinder/Mastering%20the%20Basics/Vol.%202%20-%20One%20Thousand%20and%20One %20Life-and-Death%20Problems/6%20-%20Five-move%20problems%20-%20Black%20to%20kill/prob144.sgf }

Разве это намерение не должно соответствовать одному из приведенных выше фильтров? Открытие файла SGF из браузера или проводника действительно приводит к запуску моей активности, но выполнение этого программным способом, как указано выше, больше не работает.


person TimK    schedule 01.09.2012    source источник


Ответы (1)


У меня также есть приложение, которое открывает файлы SGF, и оно отлично работает. По сравнению с вашим кодом я добавил дополнительные атрибуты mimeType и host:

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:host="*" />
            <data android:scheme="file" />
            <data android:pathPattern=".*\\.sgf" />
            <data android:mimeType="*/*" />
        </intent-filter>
        <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="*" />
            <data android:scheme="http" />
            <data android:pathPattern=".*\\.sgf" />
            <data android:mimeType="*/*" />
        </intent-filter>
        <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="*" />
            <data android:scheme="http" />
            <data android:mimeType="application/x-go-sgf" />
        </intent-filter>

Если это все еще не работает, это может быть проблема с путем к файлу. pathPattern не очень хорошо работает, когда путь включает несколько точек. Проверьте этот вопрос:

pathPattern для соответствия файлу расширение не работает, если в другом месте имени файла есть точка?

person Dalmas    schedule 01.09.2012
comment
В пути есть лишняя точка, но проблема не в этом. Пробовал файл без лишней точки, все равно не работает. - person TimK; 05.09.2012