启动器 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,这不会触发你的开始意图。
事情是这样的:
我必须使用作为应用程序启动器 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,这不会触发你的开始意图。