我从我的活动中调用Chrome自定义标签,我希望能够在我的自定义标签页上打开某个页面后返回我的应用,而无需用户点击“X”按钮。
为此,我在我的活动上添加了一个intent过滤器(调用自定义标签的活动),当该页面打开时,它会重定向到我的应用上的该活动。
现在的问题是,自定义标签位于顶部。如果我手动关闭自定义选项卡,我确实看到活动已收到响应并且按预期工作,但我的活动没有到达前台。
为什么会发生这种情况的任何想法,以及解决此问题的方法?
我知道截至目前,无法以编程方式关闭自定义选项卡。我想要做的就是将自定义标签发送到后台并将我的活动带到顶部。
我的自定义标签调用代码:
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
.setShowTitle(true)
.setToolbarColor(getToolBarColor())
.setStartAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
.setExitAnimations(this, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
.build();
customTabsIntent.launchUrl(this, Uri.parse(url));
我的活动显示:
<activity
android:name="com.xyz.sdk.SomeActivity"
android:allowTaskReparenting="true"
android:configChanges="keyboardHidden|orientation|keyboard|screenSize"
android:launchMode="singleTask"
android:noHistory="true"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<data android:scheme="someString-${applicationId}" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
答案 0 :(得分:1)
在您的活动中检测到网页时,请尝试将活动置于最顶层(而不是背景中的Chrome自定义标签),如下所示:
// Launch activity again
Intent intent = new Intent(this, A.class);
// Setting CLEAR_TOP ensures that all other activities on top of A will be finished
// and setting SINGLE_TOP ensures that a new instance of A will not
// be created (the existing instance will be reused and onNewIntent() will be called)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);