首页 > 解决方案 > Android 深层链接在创建选择器中显示重复的应用程序

问题描述

我正在使用深度链接来打开我的应用程序,我需要根据链接类型打开 5 个活动,所以我在清单中定义了 5 种类型的链接,它工作正常,但这是问题所在;在大多数设备中它都可以正常工作,但在某些设备中,Android 创建选择器会显示我的五个这样的应用程序,这真的很烦人

在此处输入图像描述

这是我在清单中定义所有 5 种类型的链接以打开不同活动的代码:

    <activity
        android:name=".ui.main.MainActivity">
        <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" />
            <data android:host="aionet.ir" />
            <data android:path="/" />
            <data android:pathPrefix="/search" />
        </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" />

            <data android:scheme="aionet" />
            <data android:host="backcallback" />
            <data android:path="/" />
            <data android:pathPrefix="/index" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ui.movieDetails.MovieDetailActivity">
        <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" />
            <data android:host="aionet.ir" />
            <data android:path="/" />
            <data android:pathPrefix="/movies" />
        </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" />

            <data android:scheme="aionet" />
            <data android:host="backcallback" />
            <data android:path="/" />
            <data android:pathPrefix="/movie" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ui.seriesDetails.SeriesDetailActivity">
        <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" />
            <data android:host="aionet.ir" />
            <data android:path="/" />
            <data android:pathPrefix="/series" />
        </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" />

            <data android:scheme="aionet" />
            <data android:host="backcallback" />
            <data android:path="/" />
            <data android:pathPrefix="/serie" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ui.cast.CastActivity">
        <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" />
            <data android:host="aionet.ir" />
            <data android:path="/" />
            <data android:pathPrefix="/cast" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ui.buyPackage.BuyPackageActivity">
        <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" />
            <data android:host="aionet.ir" />
            <data android:path="/" />
            <data android:pathPrefix="/packages" />
            <data android:pathPrefix="/order" />
        </intent-filter>
    </activity>

标签: androidmanifestdeep-linking

解决方案


您不想像那样使用路径和路径前缀。非此即彼。现在,所有这些活动都认为它们是基于路径匹配的。单独使用 pathPrefix。


推荐阅读