我有一个安卓应用程序,人们使用它作为网站的替代品。因此,当用户遇到指向该网站的URL时,我希望给他们提供“在我的应用程序中打开该URL”的选项,而不是在浏览器中打开。换句话说,我想让弹出窗口出现,让他们选择我的应用程序和浏览器(以及可能的其他应用程序)之间的区别。
我从各种来源了解到,我需要在我的应用程序中添加一个意图过滤器,该过滤器具有筛选正确形式的URL的“数据”过滤器。
所涉及的网站是http://members.iracing.com,因此我已添加了以下意图过滤器:
这根本不起作用。我不知道还有什么可以告诉你的了。我在我的网站上托管了一个简单的HTML页面,其中包含一些链接到该网站上的各个页面(所有页面都以“http://members.iracing.com/...”开头),当我单击其中任何一个时,它们只是在浏览器中打开,而不会询问我要使用哪个应用程序。我尝试在模拟器上和在我的物理设备上安装应用程序后进行操作,但都没有起作用。我甚至在一个全新的空白Android项目中尝试了这个操作,结果还是没有反应。
然后我意识到该网站需要身份验证,如果您未登录,则会将其重定向到https://members.iracing.com/membersite/login.jsp的登录页面,因此我尝试将方案替换为“https”。我甚至尝试将主机更改为“www.members.iracing.com”,最后我甚至尝试了所有这些事情的组合(不确定是否应该这样做,但嘿,我现在很绝望.....)
我从各种来源了解到,我需要在我的应用程序中添加一个意图过滤器,该过滤器具有筛选正确形式的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>
我尝试过各种形式的数据筛选器,比如使用一个带有两个属性的单一“data”节点:
<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>
依然无法成功。我不确定重定向是否相关,但是浏览器显然首先到达非重定向站点,然后才重定向到登录页,但我在任何时候都没有选择在我的应用程序中打开它的选项。此外,如果我在浏览器中手动登录,就没有重定向,但仍然无法正常工作。
我是否漏掉了一些明显的东西?我为什么不能让它工作,我无法调试它,除了尝试我能想到的每种可能组合(我试过了...)。感谢您提供任何帮助!