Пользовательские вкладки 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 и нужно вручную запустить приложение снова.

Любая помощь в этом приветствуется.


person Sutirth    schedule 10.04.2017    source источник
comment
обрушение — признак того, что что-то идет не так. Что он печатает в системный журнал (тот, который можно просмотреть с помощью «adb logcat»)? Это происходит на других версиях Android? Если произошел сбой, сообщите об ошибке, используя шаблон ошибки, как указано на github.com/GoogleChrome. /пользовательские вкладки-клиент   -  person Egor Pasko    schedule 10.04.2017
comment
@EgorPasko для определенного пограничного случая нет сбоя, и системный журнал ничего не печатает. Я думаю, это может быть просто ошибка пользовательских вкладок Chrome.   -  person Sutirth    schedule 11.04.2017
comment
не могли бы вы сообщить об ошибке в пользовательских вкладках (используя ссылку, доступную по ссылке, которую я предоставил:)?   -  person Egor Pasko    schedule 11.04.2017
comment
@EgorPasko Конечно, сделал бы это :)   -  person Sutirth    schedule 11.04.2017
comment
@Сутирт, привет. я также использую фитбит и у меня проблема с перенаправлением с фитбита на приложение, не могли бы вы взглянуть на мой вопрос stackoverflow.com/questions/52629467/   -  person hamza khan    schedule 08.10.2018


Ответы (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));
  }
  // ...
}
person Chris Blunt    schedule 19.07.2017