ActivityNotFoundException - 意图过滤器不再起作用

时间:2012-09-01 12:42:03

标签: android android-intent intentfilter

我有一个想要处理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% 20%和20%20%生死20%问题/ 6%20%20次移动%20问题%20%20黑白%20%20kill / prob144.sgf}

此意图不应与上述某个过滤器匹配吗? 从浏览器或文件浏览器打开SGF文件会导致我的活动开始,但是如上所述以编程方式执行此操作不再有效。

1 个答案:

答案 0 :(得分: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不能很好地工作。检查这个问题:

pathPattern to match file extension does not work if a period exists elsewhere in the file name?