【问题标题】:ActivityNotFoundException - Intent Filter doesn't work anymoreActivityNotFoundException - 意图过滤器不再起作用
【发布时间】:2012-09-01 12:42:02
【问题描述】:

我有一个想要处理 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 文件。这一直工作到最近。我不确定它何时停止工作,但这不是因为代码更改。我有另一个应用程序正在尝试启动 Activity,但出现异常:

未找到处理 Intent 的 Activity { 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 文件确实会启动我的活动,但如上所述以编程方式执行此操作不再有效。

【问题讨论】:

    标签: android android-intent intentfilter


    【解决方案1】:

    我还有一个可以打开 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?

    【讨论】:

    • 路径中有一个额外的点,但这似乎不是问题。我试了一个没有多余点的文件,还是不行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多