启动器 activity 使用深层链接打开两次

Launcher activity open two times using deeplinking

事情是这样的:

我必须使用作为应用程序启动器 activity 的端点实施深度链接。

所以在清单中,在启动器 activity 标签中有:

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </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="scheme" />
        </intent-filter>

来自 activity onCreate 方法的代码段:

        if (getIntent() != null) {
            // Url scheme
            if (Intent.ACTION_VIEW.equals(getIntent().getAction())) {
                // Process the deelink
            } else {
                // Do something else
            }
        }

问题:activity 打开了两次,一次是出于善意 (ACTION_VIEW),一次是无意的

我尝试使用 single_top、single_task、single_instance 等标签,但随后仅启动了不良意图(默认启动器意图)。


我怎样才能让两个 Intent 过滤器一次触发一个?

那么,你有 2 个 intent-filters。我不知道这是不是真的,但是,接下来我处理深层链接的方式是:

新建activity

DeepLinkActivity.class

OnCreate()方法,不要设置content view,这个activity只会解析你想解析的deeplink。从那里,您可以创建意图并将数据传递给您要打开的下一个 activity。希望对您有所帮助。

编辑

在你的情况下,创建新的 activity DeepLinkActivity,添加他的意图过滤器

<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="scheme" />
    </intent-filter>

现在,不要为那个 activity 设置内容视图,解析你从 getIntent() 方法获得的深层链接并继续到你想要的任何 activity,这不会触发你的开始意图。