1

我有一个想要处理 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 %20生死%20问题/6%20-%20五招%20问题%20-%20黑色%20to%20kill/prob144.sgf }

这个意图不应该与上面的过滤器之一匹配吗?从浏览器或文件资源管理器打开 SGF 文件确实会导致我的活动开始,但以编程方式执行上述操作不再有效。

4

1 回答 1

0

我还有一个可以打开 SGF 文件的应用程序,它运行良好。与您的代码相比,我添加了附加mimeTypehost属性:

        <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路径包含多个点时,它不能很好地工作。检查这个问题:

如果文件名中的其他位置存在句点,则匹配文件扩展名的路径模式不起作用?

于 2012-09-01T12:48:46.637 回答