我有一个活动'A',在该活动中,我打开了一个Chrome自定义标签。现在,当用户关闭chrome自定义选项卡时,我想打开另一个活动“B”。有没有办法知道Chrome自定义标签何时关闭。或任何其他方式来解决上述问题。
答案 0 :(得分:10)
您可以跟踪在活动A上的布尔变量上打开自定义选项卡。
private boolean mCustomTabsOpened = false;
public void launchCustomTabs(String url) {
mCustomTabsOpened = true;
new CustomTabs.Builder().build().launchUrl(this, Uri.parse(url));
}
然后,使用活动A onResume()
启动活动B
public void onResume() {
if (mCustomTabsOpened) {
mCustomTabsOpened = false;
startActivity(this, ActivityB.class);
}
}
您可能希望使用KeepAliveService来阻止ActivityA被销毁,如图所示here
答案 1 :(得分:9)
在活动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);
}
在onActivityResult中检查该请求代码:
if (requestCode == CHROME_CUSTOM_TAB_REQUEST_CODE) {
startActivity(this, ActivityB.class);
}
答案 2 :(得分:1)
嗯,这不起作用,因为如果你试图在后退按钮上调用或显示一个对话框,即,要求一个,现在跟踪Chrome自定义选项卡的关闭是不可能的。确认。 那么你可以通过你的活动来处理它们(这是在第一个位置启动它)但是这不是你想要的。 但如果有人确实找到了解决方案,那么请在下面评论。