2016-12-07 65 views
3

我有一個活動「A」,並在該活動中打開了一個Chrome自定義選項卡。現在,當用戶關閉Chrome自定義選項卡時,我想打開另一個活動「B」。有沒有辦法知道chrome自定義選項卡何時關閉。或者任何其他方式來解決上述問題。關閉Chrome自定義選項卡的回調

回答

3

你可以保持跟蹤自定義選項卡被打開了一個布爾變量上的活動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

+0

謝謝@andreban,它解決了我的問題。 – princerk

+0

我認爲這是正確的鏈接(該文件發佈後發生了更改):https://github.com/GoogleChrome/custom-tabs-client/blob/a9f1a9b6cb4b52df31aba79813029afec4f570e0/Application/src/main/java/org/chromium /customtabsclient/MainActivity.java#L190 –

4

在活動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); 
} 
0

好,這是不行的,因爲它是不可能的,因爲每次我們跟蹤Chrome定製閉幕標籤,如果您試圖在返回按鈕命中時調用或顯示對話框,即要求確認。 那麼你可以通過你的活動處理它們(首先啓動它),但那不是你想要的。 但如果有人找到解決方案,請在下面評論。