其他分享
首页 > 其他分享> > android-Chrome自定义标签在重定向时不会关闭

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

作者:互联网

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

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

如果我仅使用意图“ FLAG_NO_HISTORY”,它将起作用.
但是我需要强行使用“ FLAG_ACTIVITY_NEW_TASK”,因为在某些情况下,例如删除特定站点的令牌,
并且我们尝试重新验证浏览器,使其在Android 7.1版上崩溃,并且需要再次手动启动该应用.

任何帮助对此表示赞赏.

解决方法:

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

标签:chrome-custom-tabs,oauth-2-0,fitbit,android
来源: https://codeday.me/bug/20191111/2020316.html