我正在编写一个伴随网站的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中的数据不匹配,而是启动浏览器。
我做错了什么?
答案 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使其工作。