【问题标题】:Intercepting link with intent-filter doesn't work使用意图过滤器拦截链接不起作用
【发布时间】:2012-07-28 01:55:37
【问题描述】:

我想拦截链接,以便它打开我的应用程序,就像打开 maps.google.com 打开地图应用程序一样。

我已经阅读了 SO 中关于此的其他线程,但我不知道为什么我无法使其正常工作。

我的 AndroidManifest 中有这个

<activity android:name="com.my_app.my_app.AppActivity">
    <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"
              android:host="flickr.com" />
        <data android:scheme="http"
              android:host="www.flickr.com" />
    </intent-filter>
</activity>

我使用 Dolphin 浏览器在真实设备上进行了测试。我在地址栏中输入了 www.flickr.com,它没有显示任何选择应用程序的选项。我已经测试海豚打开 maps.google.com 并且我可以选择是否使用地图应用程序打开。所以我认为海豚不是问题。

我也从默认浏览器输入了 flickr。也没用。

这里有什么我遗漏的吗?

【问题讨论】:

  • 默认浏览器是否调用了您的应用程序?我猜 Dolphin 是通过自己的引擎处理 URL 的……你可以通过制作另一个应用程序来测试并启动一个指向 flickr 的意图,如果你的应用程序显示在列表中,那就没问题了。我认为你做得对。
  • 默认浏览器也没有调用我的应用。当我将 maps.google.com 放入 dolphin 时,我可以选择地图应用程序。所以我认为 dolphin 不是我的应用没有被调用的问题。

标签: android android-intent intentfilter


【解决方案1】:

您只能在使用 Intent 打开相应的 Activity 时拦截 URL,因为它的实现方式是使用 Intent 过滤器和 Intent 解析。当您在浏览器中键入地址时没有任何意图,只是一个方法调用。如果 dolphin 显示您打开 google 地图,可能它是硬编码到 Dolphin 应用程序中的,但它可能不适用于其他 url 或应用程序。

【讨论】:

    【解决方案2】:

    您需要添加 android:path、android:pathPrefix 或 android:pathPattern 属性。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2018-01-07
      相关资源
      最近更新 更多