Android系统。深层链接不适用于http / https方案

时间:2017-10-11 06:09:01

标签: android deep-linking

我通过这种方式为我的Android应用添加了深层链接:

<activity
        android:name=".views.DeepLinkingActivity"
        android:exported="true">
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:scheme="https"
                android:host="example.com"/>
        </intent-filter>
    </activity>

当我点击https://example.com时,我会被重定向到网站。

当我将android:scheme="https"更改为android:scheme="appscheme"时,它会正常运行并将其重定向到我的应用。

如何强制通过https计划打开我的应用程序?

更新

我添加了一个子域,但它仍无效。

<activity
        android:name=".views.DeepLinkActivity"
        android:exported="true">
        <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="https"
                android:host="www.example.ru"/>
        </intent-filter>
    </activity>

7 个答案:

答案 0 :(得分:2)

感谢veritas1,我从https计划中删除了android:autoVerify="true"。我还将方案从https更改为http。 (您可以阅读有关autoVerify的信息。)

因此,目前有两种不同的方案:

<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="your-site.com"
        android:pathPrefix="/"
        android:scheme="http"
        />
</intent-filter>
<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />

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

    <data
        android:host="your-site.com"
        android:pathPrefix="/"
        android:scheme="myapp"
        />
</intent-filter>

单击链接myapp://your-site.com / ...时,将打开一个应用程序。单击http://your-site.com/ ...时,Chrome浏览器将提供在应用程序或其他浏览器中打开的功能,而其他移动浏览器会忽略此设置,并尝试自行打开。

更新

有关应用程序链接,请参见https://stackoverflow.com/a/60342565/2914140

答案 1 :(得分:1)

您好请使用以下数据,并尝试参考此doc

<intent-filter>
                <data
                    android:scheme="ou unique scheme(appname,package name)" />

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

OR

  <data
                android:scheme="you unique scheme(appname,package name)"
                android:host="www.example.ru"/>

答案 2 :(得分:0)

试试这个

<activity
             android:name=".views.DeepLinkingActivity"
        android:exported="true">


           <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />

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

                <data
                    android:host="open"
                    android:scheme="example" />
            </intent-filter>
            <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="example.com"
                    android:pathPrefix="/"
                    android:scheme="http" />
            </intent-filter>
           <intent-filter android:autoVerify="true">
                <action android:name="android.intent.action.VIEW" />

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

                <data
                    android:host="example.com"
                    android:pathPrefix="/"
                    android:scheme="https" />
            </intent-filter>
        </activity>

答案 3 :(得分:0)

您指的是深层链接,但android:autoVerify="true"用于App链接,因此域android:host="www.example.com"(您不拥有?)将会检查数字资产链接json文件。见Redefinitions of constexpr static data members are allowed now? (but not inline const)?

为了让您的测试有效,我建议您删除web browser并向主机添加子域名,例如web browser

答案 4 :(得分:0)

答案 5 :(得分:0)

只需使用 http 即可。不知道实施何时发生变化。

但我刚刚测试过,使用 http 会使http和https工作。

所以改变你的意图过滤器:

<intent-filter android:autoVerify="true">

<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="example.com"/>

</intent-filter>

答案 6 :(得分:0)

您还可以添加

  

sub.example.com

<intent-filter android:label="@string/app_name">
                <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="example.com" />
                <data android:scheme="app" android:host="com.example.example" />
            </intent-filter>