清单中的冲突意图过滤器

时间:2018-01-10 14:39:37

标签: android intentfilter

对于我们的启动活动,我们有一个用于深度链接的intent-filter集。这是:

<activity
    android:name=".activity.SplashActivity"
    android:configChanges="keyboardHidden|orientation|screenSize|locale"
    android:label="${applicationLabel}"
    android:theme="@style/Theme.AppCompat.NoActionBar.Translucent">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <category android:name="android.intent.category.BROWSABLE" />

        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />

        <data
            android:host="@string/tve_host"
            android:scheme="@string/market_scheme" />
    </intent-filter>
</activity>

现在,我们有一个直播电视活动,正在寻找相同的方案和相同的主机,但具体路径。这是:

<activity
            android:name=".activity.TveActivity"
            android:configChanges="keyboardHidden|orientation|screenSize|locale"
            android:parentActivityName=".activity.HomeActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar" >
            <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:path="/live"
                    android:host="@string/tve_host"
                    android:scheme="@string/market_scheme" />
            </intent-filter>
        </activity>

单击具有该路径的链接时,它可以在两个活动之间进行选择。

除了专门列出splash事件的intent-filters中的所有其他路径之外,还有什么方法可以阻止这种情况吗?

2 个答案:

答案 0 :(得分:0)

相对于docs,不,没有这样的方式。您必须在intent-filter中列出启动活动的所有其他路径。

答案 1 :(得分:0)

您尚未在原始意图上指定路径,因此它与任何内容匹配。

如果你添加

Car

它只会匹配一个空路径,并会认为这与android:path="/" 不同。