意图过滤以响应Android中的所有网址?

时间:2016-05-31 10:20:30

标签: android url android-intent intentfilter

我想创建一个涉及响应设备上所有网址的应用。文档提到了如何处理如下的特定方案 -

<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="www.youtube.com" android:scheme="http" />
</intent-filter>

但是,如何定义一个意图过滤器来处理不仅属于特定域或主机的任何URL?可能吗?

3 个答案:

答案 0 :(得分:3)

定义架构,如:

<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:scheme="https"/>
    <data android:scheme="about"/>
    <data android:scheme="javascript"/>
</intent-filter>

答案 1 :(得分:1)

只需从您发布的代码中删除以下行:

  <data android:host="www.youtube.com" android:scheme="http" />

所以你最终会得到

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

或者,您可能只想将行缩短为

  <data android:scheme="http" />

这将使您的应用仅截取http网址,因此基本上是链接。

答案 2 :(得分:0)

即使官方的android教程说您可以简单地删除数据过滤器以减少意图过滤器的限制,但这样做可能会导致“缺少数据元素”错误。 您可以改为执行以下操作

<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="*.com" android:scheme="http" />
</intent-filter>

您还可以为.net,.org等添加数据过滤器