我有域名example.com
。它可以与https
和http
一起使用。我有这个服务的Android客户端。我希望客户端能够打开几种链接类型。他们在这里:
http://example.com
https://example.com
http://example.com/app
https://example.com/app
这四个应该在ListActivity上打开。但也有另一个链接,如:
https://testask.com/i/__some_guid__
https://testask.com/item/__some_guid__
and relevant link without https
应该在另一个活动上打开它们,例如,DetailsActivity。目前我对DetailsActivity有以下意图过滤器:
<intent-filter
android:autoVerify="true"
tools:targetApi="m">
<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" />
<data android:scheme="https" />
<data
android:host="@string/root_host_endpoint"
android:pathPattern="/i/.*" />
<data
android:host="@string/root_host_endpoint"
android:pathPattern="/item/.*" />
</intent-filter>
看起来它工作正常。但我不明白,如何添加MainActivity意图过滤器指向根主机网址,而不是重叠DetailsActivity意图过滤器。
答案 0 :(得分:0)
您可以使用不同的intent过滤器进行多项活动。您可以使用操作/类别/数据区分您的意图过滤器。在您的情况下,您必须调整您的数据配置,以使其处理不同的意图。因此,MainActivity / ListActivity将具有不同的数据配置,而不是DetailsActivity
答案 1 :(得分:0)
<activity android:name=".ListActivity">
<intent-filter
android:autoVerify="true"
tools:targetApi="m">
<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" />
<data android:scheme="https" />
<data
android:host="example.com"
android:pathPattern="/*/.*" />
</intent-filter>
</activity>
<activity android:name=".DetailsActivity">
<intent-filter
android:autoVerify="true"
tools:targetApi="m">
<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" />
<data android:scheme="https" />
<data
android:host="@string/root_host_endpoint"
android:pathPattern="/i/.*" />
<data
android:host="@string/root_host_endpoint"
android:pathPattern="/item/.*" />
</intent-filter>
</activity>
答案 2 :(得分:0)
Welp,经过一些实验后,我发现以下意图过滤器按预期工作:
<intent-filter
android:autoVerify="true"
tools:targetApi="m">
<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" />
<data android:scheme="https" />
<data android:host="@string/root_host_endpoint" />
<data
android:host="@string/root_host_endpoint"
android:path="/" />
<data
android:host="@string/root_host_endpoint"
android:path="/app" />
</intent-filter>