2017-04-10 112 views
0

我正在使用chrome自定義選項卡來獲取來自自定義選項卡重定向的oAuth連接請求我在應用中成功重定向。唯一的問題是,Chrome自定義選項卡不會在重定向時關閉,而是保留在堆棧中。Chrome自定義選項卡不會在重定向時關閉

在自定義選項卡中啓動url的代碼如下。

customTabsIntent = new CustomTabsIntent.Builder(mCustomTabsSession) 
                   .setToolbarColor(ContextCompat.getColor(getBaseContext(), R.color.colorPrimary)) 
                   .setStartAnimations(getBaseContext(), 
                     R.anim.slide_in_right, R.anim.slide_out_left) 
                   .setExitAnimations(getBaseContext(), 
                     android.R.anim.slide_in_left, android.R.anim.slide_out_right) 
                   .setShowTitle(true) 
                   .build(); 
                 customTabsIntent.intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
                 customTabsIntent.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
customTabsIntent.launchUrl(Settings_Activity.this, Uri.parse(fitbitUrlBuilder.toString())); 

我試過在清單文件中使用「singleTask」和「singleInstance」,但問題仍然存在。

如果我只使用意圖「FLAG_NO_HISTORY」它的作品。 但我需要強制需要使用「FLAG_ACTIVITY_NEW_TASK」,因爲有一定的邊緣情況下,例如,如果特定網站的令牌被刪除 並且我們嘗試重新驗證瀏覽器剛剛在android版本7.1上崩潰,並且需要手動啓動應用程序再次。

對此的任何幫助表示讚賞。

+0

崩潰是出現問題的跡象。什麼打印到系統日誌(可以用'adb logcat'查看)?它發生在其他Android版本上嗎?如果發生崩潰,請使用https://github.com/GoogleChrome/custom-tabs-client –

+0

@EgorPasko中提到的錯誤模板提交錯誤消息,以查看某個邊緣情況,此時沒有崩潰,系統日誌不會打印什麼。這可能只是一個鉻自定義選項卡的錯誤,我猜 – Sutirth

+0

你能否提出一個錯誤的自定義選項卡(使用鏈接可以通過我提供的鏈接:)? –

回答

0

我在嘗試驗證oAuth提供程序時遇到同樣的問題。我得到的代碼工作使用自定義選項卡25.3.1,並使用addFlags代替setFlags

的build.gradle

dependencies { 
    ... 
    compile 'com.android.support:customtabs:25.3.1' 
} 

MyActivity.java

public void dispatchAuthIntent() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
    // Use Chrome Custom Tabs 
    CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder() 
     .setToolbarColor(ContextCompat.getColor(getBaseContext(), R.color.brand_blue_dark)) 
     .setShowTitle(true) 
     .build(); 

    customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
    customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    customTabsIntent.launchUrl(this, Uri.parse(url)); 
    } 
    // ... 
} 
相關問題