将Chrome自定义标签发送到后台

时间:2017-03-26 07:22:39

标签: android android-intent android-manifest intentfilter chrome-custom-tabs

我从我的活动中调用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>

1 个答案:

答案 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);