Android 深度链接在创建选择器中显示重复的应用

Android deep linking showing duplicate app in create chooser

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

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

    <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>

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