web-dev-qa-db-ja.com

chromeカスタムタブの却下時のコールバック

アクティビティ「A」があり、そのアクティビティ内でchromeカスタムタブを開きました。ユーザーがchromeカスタムタブを閉じると、別のアクティビティ「B」を開きます。chromeカスタムタブが閉じられたことを知る方法はありますか。または、上記の問題を解決する他の方法はありますか。

8
rahulxkumar

アクティビティ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が破棄されないようにすることができます ここ

12
andreban

アクティビティ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);
}
15
Claus Holst

さて、これは機能しません。戻るボタンを押したときにダイアログボックスを呼び出したり表示したりしようとしている場合、現在のところchromeカスタムタブの終了を追跡することはできないため、つまり、確認を求めることです。アクティビティ(最初に起動する)でそれらを処理できますが、それは私が思うことではありません。しかし、誰かが解決策を見つけた場合は、以下にコメントしてください。