我有多种针对不同应用程序风格的深层链接方案。我有一个后端,每个应用程序发送一个不同的方案。如果所有这些都安装在同一设备上,则所有这些设备都能够解析发送的深层链接。因此,当安装所有三个并且调用app2的深层链接时。所有应用程序都可以捕获它,但只有app2可以在应用程序中正确处理它,并且应该是唯一可以捕获它的应用程序。
我的.gradle文件中定义的口味
productFlavors {
app1{
applicationId "com.apps.app1"
}
app2{
applicationId "com.apps.app2"
}
app3{
applicationId "com.apps.app3"
}
}
我使用的intent过滤器来捕获清单中的深层链接。
<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:pathPrefix="/"
android:scheme="app1" />
<data
android:pathPrefix="/"
android:scheme="app2" />
<data
android:pathPrefix="/"
android:scheme="app3" />
</intent-filter>
有没有办法让深度链接只能用一种风味来捕捉?
答案 0 :(得分:5)
对于在2019年参观此产品的人们:您可以针对每种口味使用manifestPlaceholders
。
就您而言:
productFlavors {
app1{
applicationId "com.apps.app1"
manifestPlaceholders.scheme = "app1"
}
app2{
applicationId "com.apps.app2"
manifestPlaceholders.scheme = "app2"
}
app3{
applicationId "com.apps.app3"
manifestPlaceholders.scheme = "app3"
}
}
,然后在清单中使用它:
<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:pathPrefix="/"
android:scheme="${scheme}" />
答案 1 :(得分:2)
您必须为每个产品风格提供自己的清单文件,您可以在其中为深层链接指定不同 URI模式。
您可以参考Configure Build Variants和 Merge Multiple Manifest Files有关如何实现这一目标的详细信息,以及有关构建应用产品风格的更多信息。