I have an activity 'A' and inside that activity, I have opened a chrome custom tab. Now when the user closes the chrome custom tab I want to open another activity 'B'. Is there a way to know when the chrome custom tabs has been closed. Or any other way to solve the above problem.
问题:
回答1:
You could keep track that Custom Tabs was opened on a boolean variable on Activity A.
private boolean mCustomTabsOpened = false;
public void launchCustomTabs(String url) {
mCustomTabsOpened = true;
new CustomTabs.Builder().build().launchUrl(this, Uri.parse(url));
}
Then, use Activity A's onResume()
to launch Activity B
public void onResume() {
if (mCustomTabsOpened) {
mCustomTabsOpened = false;
startActivity(this, ActivityB.class);
}
}
You may want to use the KeepAliveService to prevent ActivityA from being destroyed, as illustrated here
回答2:
In Activity A you launch the Chrome Custom Tab like this:
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);
}
And in onActivityResult your check for that request code:
if (requestCode == CHROME_CUSTOM_TAB_REQUEST_CODE) {
startActivity(this, ActivityB.class);
}
回答3:
well, this doesn't work, because it's not possible as per now to track the closing of chrome custom tab, if you are trying to call or display a dialog box on hit of back button, i.e., to ask for a confirmation. Well you can handle them over your activity (which is launching it at the first place) but that's not what you want i think. But if anyone does find the solution then please comment below.