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。
我正在使用 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。