从URL使用intent-filter打开Android应用程序不工作

我有一个Android应用程式,让人们用来取代网站。因此,当用户遇到网站的URL时,我想给他们选择“打开URL”在我的应用程序,而不是在浏览器中。换句话说,我想要弹出窗口,让他们在我的应用程序和浏览器(和可能的其他应用程序)之间选择。

我从各种来源理解,我需要添加一个意图过滤器到我的应用程序中的活动,’data’过滤器的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 / …”开头),当我点击任何一个,他们只是打开在浏览器中没有询问我要使用哪个应用程序。我试过它在模拟器以及在我的物理设备上安装应用程序后,没有什么工作。我试过这个在一个完全BLANK,新的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>

仍然没有去。我不知道重定向是否相关,但浏览器清楚地首先转到未重定向的网站,然后重定向到登录页面,但在任何时候,我得到的选择,在我的应用程序打开它。此外,如果我先在浏览器中手动登录,没有重定向,它仍然不工作。

我在这里缺少明显的东西吗?我拉我的头发为什么这不工作,我不能调试它,除了尝试我可能想到的每一个可能的组合(我做了…)。感谢任何帮助!

最佳答案
在您的< intent filter>中使用这三个。

<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

转载注明原文:从URL使用intent-filter打开Android应用程序不工作 - 代码日志