Chrome 自定义标签不会在重定向时关闭

Sut*_*rth 3 android oauth-2.0 fitbit chrome-custom-tabs

我正在使用 chrome 自定义选项卡从自定义选项卡的重定向中获取 oAuth 连接请求,我在应用程序中成功重定向。唯一的问题是 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()));
Run Code Online (Sandbox Code Playgroud)

我尝试在清单文件中使用“singleTask”和“singleInstance”,但问题仍然存在。

如果我只使用意图“FLAG_NO_HISTORY”,它就可以工作。但是我需要强制使用“FLAG_ACTIVITY_NEW_TASK”,因为存在某种边缘情况,例如,如果特定站点的令牌被删除,我们尝试重新验证浏览器在 android 7.1 版上崩溃,需要再次手动启动应用程序。

对此的任何帮助表示赞赏。

Chr*_*unt 5

我在尝试对 oAuth 提供者进行身份验证时遇到了同样的问题。我使用自定义选项卡 25.3.1 使代码工作,并使用addFlags代替setFlags

构建.gradle

dependencies {
  ...
  compile 'com.android.support:customtabs:25.3.1'
}
Run Code Online (Sandbox Code Playgroud)

我的活动.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));
  }
  // ...
}
Run Code Online (Sandbox Code Playgroud)