关闭Chrome自定义标签的回调

rah*_*mar 6 android android-activity chrome-custom-tabs

我有一个活动'A',在该活动中,我打开了一个chrome自定义标签.现在,当用户关闭chrome自定义选项卡时,我想打开另一个活动"B".有没有办法知道Chrome自定义标签何时关闭.或任何其他方式来解决上述问题.

Cla*_*lst 15

在活动A中,您可以像这样启动Chrome自定义标签:

private final int CHROME_CUSTOM_TAB_REQUEST_CODE = 100;

public void launchCustomTabs(String url) {
    CustomTabsIntent customTabsIntent = builder.build();
    customTabsIntent.intent.setData(Uri.parse(url));
    startActivityForResult(customTabsIntent.intent, CHROME_CUSTOM_TAB_REQUEST_CODE);
}
Run Code Online (Sandbox Code Playgroud)

在onActivityResult中,您检查该请求代码:

if (requestCode == CHROME_CUSTOM_TAB_REQUEST_CODE) {
    startActivity(this, ActivityB.class);
}
Run Code Online (Sandbox Code Playgroud)

  • 至于 android 31 不起作用 onActivityResult 在自定义选项卡打开后立即被调用,并且在其关闭时永远不会被调用 (3认同)

and*_*ban 12

您可以跟踪在活动A上的布尔变量上打开自定义选项卡.

private boolean mCustomTabsOpened = false;

public void launchCustomTabs(String url) {
   mCustomTabsOpened = true;
   new CustomTabs.Builder().build().launchUrl(this, Uri.parse(url));
}
Run Code Online (Sandbox Code Playgroud)

然后,使用活动A onResume()启动活动B.

public void onResume() {
    if (mCustomTabsOpened) {
        mCustomTabsOpened = false;
        startActivity(this, ActivityB.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能需要使用KeepAliveService防止ActivityA被破坏,如图所示这里