意向过滤器拦截链接不起作用
问题描述:
我想拦截链接,以便打开我的应用,就像打开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。也没有工作。
有什么我在这里失踪?
答
您只能在使用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="/" />
默认浏览器是否打电话给您的应用程序?我猜Dolphin通过自己的引擎处理了URL ...你可以通过制作另一个应用程序来测试,并开始一个flickr的意图,如果你的应用程序显示在列表中,那么它是可以的。我认为你做对了。 – 2012-07-28 04:17:02
默认浏览器也没有调用我的应用程序。当我将海豚放入maps.google.com时,我可以选择地图应用。所以我认为海豚不是为什么我的应用程序没有被调用的问题。 – eckyputrady 2012-07-28 07:19:03