如何处理不同活动的应用程序链接?

时间:2017-06-13 05:52:12

标签: android intentfilter

我有域名example.com。它可以与httpshttp一起使用。我有这个服务的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意图过滤器。

3 个答案:

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