Android 深层链接适用于 ADB,但不适用于浏览器

chi*_*NUT 5 android deep-linking android-intent

我正在尝试向我的应用程序添加深层链接。我在我的一项活动中添加了 2 个意图过滤器,一个用于“http”方案的过滤器,另一个用于我的自定义方案(我使用的是“示例”)。我根据此 SO 中的信息(深层链接意图不起作用)为每个方案添加了一个意图过滤器,以便我可以同时处理链接example://testhttp://www.example.com/test链接类型。

这是我的 XML:

        <activity
    android:name="com.myapp.myapp.SplashActivity"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter android:label="Intent Filter label">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.LAUNCHER" />
        <!-- Accepts URIs that begin with "http://www.example.com/test2” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/test2" />

    </intent-filter>
    <intent-filter android:label="Intent Filter label">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.LAUNCHER" />

        <!-- Accepts URIs that begin with "example://test2” -->
        <data android:scheme="example"
              android:host="test2" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

当我在 ADB 中测试时,它们加载正确:

adb shell am start -W -a android.intent.action.MAIN -d "example://test2" com.myapp.myapp
Run Code Online (Sandbox Code Playgroud)

返回

Starting: Intent { act=android.intent.action.MAIN dat=example://test2 pkg=com.myapp.myapp }
Status: ok
Activity: com.myapp.myapp/com.app.myapp.SplashActivity
ThisTime: 357
TotalTime: 357
Complete
Run Code Online (Sandbox Code Playgroud)

但是,我在浏览器中完全没有得到任何东西。当我在浏览器中尝试此操作时:“ example://test2” 在 FF 中我得到“ couldn't find an app to open this link”,而在 Chrome 和本机浏览器中,它会打开新的 Google 搜索“ example://test2”。

当我尝试另一种样式时:“ http://www.example.com/test2”它只是尝试在所有 3 个浏览器中导航到该网页。

我正在将应用程序从 Android Studio 部署到我的手机。我还尝试通过生成调试 APK,将其发送到我的手机并进行安装。两者结果相同。 我究竟做错了什么?据我所知,我已经按照指南(https://developer.android.com/training/app-indexing/deep-linking.html)写了这封信。我的应用程序是否需要在商店中才能使用深层链接?

chi*_*NUT 6

呃,我的行动本应是“查看”,但却是“主要”……

<intent-filter>
        <action android:name="android.intent.action.MAIN" />
Run Code Online (Sandbox Code Playgroud)

...

<intent-filter>
        <action android:name="android.intent.action.VIEW" />
Run Code Online (Sandbox Code Playgroud)