Android深层链接无法正常运行

时间:2016-07-10 17:01:41

标签: android intentfilter deep-linking

我必须将我们需要的活动深层链接到两个URL,但每次我点击一个URL它同时显示两个活动,那么如何将intent-filter设置为仅1具体的URL?

第一个网址http://www.sample.com/newcars/models/33

及其活动

<activity
        android:name=".ui.activities.NewCarModelEngineActivity"
        android:label="@string/newCars"
        android:screenOrientation="sensorPortrait">
        <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:host="sample.com"
                android:pathPrefix="/newcars/engines/"
                android:scheme="http"/>
            <data
                android:host="www.sample.com"
                android:pathPrefix="/newcars/engines/"
                android:scheme="http"/>

            <data
                android:host="newengine"
                android:pathPattern="/..*/..*/..*"
                android:scheme="sample"></data>

        </intent-filter>
    </activity>

第二个网址http://www.sample.com/usedcars/engines/9876543 及其活动

<activity
        android:name=".ui.activities.UsedCarEngineDetailsActivity"
        android:label="@string/usedCars"
        android:screenOrientation="sensorPortrait">
        <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:host="sample.com"
                android:pathPrefix="/usedcars/engines/"
                android:scheme="http"/>
            <data
                android:host="www.sample.com"
                android:pathPrefix="/usedcars/engines/"
                android:scheme="http"/>
            <data
                android:host="usedengine"
                android:pathPattern="/..*/..*/..*"
                android:scheme="sample"></data>
        </intent-filter>
    </activity>

1 个答案:

答案 0 :(得分:0)

尝试将scheme="sample"数据放在单独的intent过滤器中。这似乎是一个错误,但有时Android会忽略路径前缀,当另一个存在并且为空或带有通配符时。

您还可以使用host="*sample.com"来匹配sample.comwww.sample.com

您的第一项活动:

<activity
    android:name=".ui.activities.NewCarModelEngineActivity"
    android:label="@string/newCars"
    android:screenOrientation="sensorPortrait">

    <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="*sample.com"
            android:pathPrefix="/newcars/engines/" />

    </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="sample"
            android:host="newengine"
            android:pathPattern="/..*/..*/..*" />

    </intent-filter>

</activity>