Callback on dismiss of chrome custom tabs

2019-01-24 15:22发布

问题:

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.