【问题标题】:Android deeplinks not working properlyAndroid 深层链接无法正常工作
【发布时间】:2016-11-12 15:47:39
【问题描述】:

我必须进行需要将它们深层链接到两个 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>

【问题讨论】:

    标签: android intentfilter deep-linking


    【解决方案1】:

    尝试将您的 scheme="sample" 数据放在单独的意图过滤器中。这似乎是一个错误,但有时 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>
    

    【讨论】:

    • 我刚刚试过了,但没有用,它仍然显示两个活动。
    猜你喜欢
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 2012-12-27
    • 2014-12-26
    相关资源
    最近更新 更多