更精确的 URI 方案
More precise URI scheme
问题
我有多种方案可以将用户引导至应用程序的不同部分。问题是,由于所有这些方案都以相同的方式开始,因此用户必须从 Android 应用程序选择器(或 w/e 调用带有应用程序的底部框)中选择他想去的地方。
我希望我的方案更 "precise" 以避免强迫用户做出此决定。
代码
Activity1 方案触发器
<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="http" android:host="foobar.com" android:pathPrefix="/path/category"/>
<data android:scheme="foobar" android:host="foobar.com" android:pathPrefix="/path/category"/>
</intent-filter>
Activity2方案触发器
<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="http" android:host="foobar.com" android:pathPrefix="/path"/>
<data android:scheme="foobar" android:host="foobar.com" android:pathPrefix="/path"/>
</intent-filter>
我的 UriSchemes
foobar://foobar.com/path
http://foobar.com/path
foobar://foobar.com/path/category
http://foobar.com/path/category
因为 activity1 的 pathPrefix 是 Activity1 中相同的前缀,所以那里存在歧义 - 所以 android 将无法明确地解析对 activty1 的请求。
有几个选项:-
使用意图过滤器创建中间 DeepLinkActivity 以捕获基本 scheme/host/pathPrefix 并使用它手动处理 url 并转发到相关 Activity。如果您将来有复杂的 url 结构,这会提供更大的灵活性。
将 activity2 的 url 更改为独特的东西(如果可能的话)
我会推荐选项 1
问题
我有多种方案可以将用户引导至应用程序的不同部分。问题是,由于所有这些方案都以相同的方式开始,因此用户必须从 Android 应用程序选择器(或 w/e 调用带有应用程序的底部框)中选择他想去的地方。 我希望我的方案更 "precise" 以避免强迫用户做出此决定。
代码
Activity1 方案触发器
<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="http" android:host="foobar.com" android:pathPrefix="/path/category"/>
<data android:scheme="foobar" android:host="foobar.com" android:pathPrefix="/path/category"/>
</intent-filter>
Activity2方案触发器
<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="http" android:host="foobar.com" android:pathPrefix="/path"/>
<data android:scheme="foobar" android:host="foobar.com" android:pathPrefix="/path"/>
</intent-filter>
我的 UriSchemes
foobar://foobar.com/path
http://foobar.com/path
foobar://foobar.com/path/category
http://foobar.com/path/category
因为 activity1 的 pathPrefix 是 Activity1 中相同的前缀,所以那里存在歧义 - 所以 android 将无法明确地解析对 activty1 的请求。
有几个选项:-
使用意图过滤器创建中间 DeepLinkActivity 以捕获基本 scheme/host/pathPrefix 并使用它手动处理 url 并转发到相关 Activity。如果您将来有复杂的 url 结构,这会提供更大的灵活性。
将 activity2 的 url 更改为独特的东西(如果可能的话)
我会推荐选项 1