2014-03-19 97 views
3

在我的应用程序中,我设置了一个意图过滤器来匹配特定类型的链接,如果在Web浏览器或其他字段中单击。它目前看起来像这样:可能会绕过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="www.mydomain.com" 
     android:scheme="http" /> 
    <data 
     android:host="mydomain.com" 
     android:scheme="http" /> 
    <data 
     android:host="m.mydomain.com" 
     android:scheme="http" /> 
</intent-filter> 

这很好。如果你点击一个链接,说http://www.mydomain.com/article_name然后用户可以选择打开应用程序中的文章,我可以显示内容的唯一。下面是问题 - 在应用程序中,我想为用户提供一个选项,以便仍然可以突破并“在浏览器中打开”。然而,如果我这样做,只是试图启动浏览器的意图,我的应用程序再次捕捉链接,我们围绕一圈。

我该如何强制在浏览器中打开链接?

回答

1

我相信你可以使用this thread提供的答案来达到你的目的。基本上,当您启动“打开浏览器”意图时,您可以预览将能够打开它的活动。从那里,你可以选择一个不是你的应用程序,并将其设置为意图的包,这将导致另一个应用程序打开它。

最坏的情况下,您可以强制创建选择器,该选择器将同时包含您的应用和其他可以打开您的网站的应用,使用户可以选择浏览器。

This other question也可能是有用的,因为它的答案包含一个自定义选择器的实现,它显然允许你过滤可见的活动,所以你可以删除你的应用程序。