意向过滤器拦截链接不起作用

问题描述:

我想拦截链接,以便打开我的应用,就像打开maps.google.com打开地图应用一样。意向过滤器拦截链接不起作用

我已经阅读过其他线程在这个关于这个,但我不知道为什么我不能得到这个工作。

我有这个在我的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> 

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

我也从默认浏览器进入了flickr。也没有工作。

有什么我在这里失踪?

+0

默认浏览器是否打电话给您的应用程序?我猜Dolphin通过自己的引擎处理了URL ...你可以通过制作另一个应用程序来测试,并开始一个flickr的意图,如果你的应用程序显示在列表中,那么它是可以的。我认为你做对了。 – 2012-07-28 04:17:02

+0

默认浏览器也没有调用我的应用程序。当我将海豚放入maps.google.com时,我可以选择地图应用。所以我认为海豚不是为什么我的应用程序没有被调用的问题。 – eckyputrady 2012-07-28 07:19:03

您只能在使用Intent打开相应的活动时拦截URL,因为它的使用方式是使用意图过滤器和意向解析。当你在浏览器中输入地址时没有意图,只是一个方法调用。如果海豚显示你打开谷歌地图,也许它是硬编码到海豚应用程序的东西,但它不会与其他网址或应用程序。

您需要添加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="/" />