Chrome自定义选项卡不会在重定向时关闭

问题描述:

我正在使用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

你能否提出一个错误的自定义选项卡(使用链接可以通过我提供的链接:)? –

我在尝试验证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)); 
    } 
    // ... 
}