将URL与Intent不匹配

时间:2011-10-26 12:49:15

标签: android android-intent

我正在编写一个伴随网站的Android应用,我想让应用拦截某些网址。我通过Google和SO找到了多个示例,但没有一个能够正常运行。我创建了我的意图:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://xgn.nl/article/" + String.valueOf(id)));

然后从另一个Activity(其中我是上面的意图)启动它

startActivity(i);

应该收到此活动的意图过滤器是:

<activity android:name=".ArticleActivity" android:theme="@style/XGN.Red">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="http" android:host="xgn.nl" android:pathPrefix="/article/" android:mimeType="text/*" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>
    </activity>

我也尝试过没有过滤器中的mimeType。意图解析器会看到过滤器,但会抱怨数据与intent中的数据不匹配,而是启动浏览器。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

我在发布它之后实际解决了5s,问题是你需要为此工作指定完全限定的类名:)

<activity android:name="nl.xgn.ArticleActivity" android:theme="@style/XGN.Red">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="http" android:host="xgn.nl" android:pathPrefix="/article/" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

编辑:更确切地说,我在logcat中看到的错误是错误的。数据类型确实匹配,但它选择了比我懒惰定义的活动更明显的浏览器类。指定完整的类名并删除mimeType使其工作。