我有一个Android应用程序,人们对于一个网站的替代品使用。 因此,当用户遇到一个网址的网站,我想给他们在我的应用程序,而不是在浏览器中“打开URL”选项。 换句话说,我想弹出出现,让他们我的应用程序和浏览器(以及可能的其他应用程序)之间进行选择。
我从我需要一个意图过滤器在我的应用程序的“数据”过滤器上的正确形式的URL过滤器添加到活动各种渠道了解。
有问题的网站http://members.iracing.com ,所以我增加了以下意图过滤器:
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:host="members.iracing.com" />
</intent-filter>
</activity>
我曾尝试过各种形式的这些数据过滤器,例如使用具有两个属性的单一“数据”节点:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="members.iracing.com"/>
</intent-filter>
它根本就没有工作。 我不知道还有什么要告诉你。 我托管在我的网站上简单的HTML页面与几个链接到不同页面该网站上(全部是以“http://members.iracing.com / ...”),当我点击其中任何一个,他们只需打开在而没有问我要使用的应用程序的浏览器。 我试了一下两者在模拟器上以及我的物理设备上安装应用程序后,没有什么工作。 我在一个完全空白的,新的Android项目尝试这样做只是为了看看是否能够正常工作,什么都没有。
后来我意识到,该网站需要身份验证,如果您还没有登录它重定向到登录页面,在https://members.iracing.com/membersite/login.jsp ,所以我试图用“https”开头替换方案。 我甚至试图改变主机“www.members.iracing.com”,并在最后我甚至尝试了所有这些事情的组合(不知道这应该工作,但是,嘿,我在这一点绝望.. ...)
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="members.iracing.com" />
<data android:host="www.members.iracing.com" />
</intent-filter>
仍然没有去。 我不知道如果重定向是相关的,虽然,浏览器显然会先转到非重定向的网站,然后做重定向到登录页面,但在任何时候,我会得到选择在我的应用程序将其打开。 此外,如果我在浏览器中手动登录第一,没有重定向,它仍然无法正常工作。
我失去了一些东西明显在这里吗? 我拉我的头发为什么这不工作,我不能调试它除了尝试各种可能的组合我能想到的(我没有...)。 谢谢你的帮助!