Веб-представление Android неожиданно перемещается при вызове onCreate или onResume

#android #webview #apk #single-sign-on #deep-linking

Вопрос:

Я не могу размножаться по требованию, но, как правило, этот сценарий в конечном итоге приводит к размножению:

  1. Войдите в приложение с помощью Google (использует пользовательскую вкладку Chrome и протокол глубокой привязки).
  2. Сверните приложение
  3. Через некоторое время (ВАЖНО, по крайней мере, через несколько минут, но дольше, чем вы думаете) снова откройте его
  4. Обратите внимание, что вы находитесь на экране входа в систему и видите общую ошибку формы
  5. Ошибка возникает в /вход-google (настроенная конечная точка для единого входа Google), что означает, что по какой-то причине приложение пыталось перейти к конечной точке входа google

Ошибка:

 08/13/2021 07:16:08 - Home/Error Path:/signin-google
08/13/2021 07:16:08 - An error was encountered while handling the remote login. -    at Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.HandleRequestAsync()
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)

08/13/2021 07:16:08 - The oauth state was missing or invalid. - 

08/13/2021 07:16:08 - Login failed
 

Код активности приложения для Android:

 override fun onStart() {
    super.onStart();
    setVisible(true);
}

override fun onResume() {
    var data = getIntent().getData();
    setVisible(true)
    super.onResume();
    isInForeground = true;
}

override fun onPause() {
    super.onPause();
    isInForeground = false
}

public override fun onDestroy() {
    super.onDestroy()
    this.unregisterReceiver(receiver)
    BackgroundService.CancelAlarm(this);
}

@RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var data = getIntent().getData();
    if(data != null){
        var url = data.toString().replace(DEEPLINK_PROTOCOL,IDP_URL_BASE);
        intentUrl = url;
    }


    this.setUpAds();
    this.setUpWebView();
    this.setUpProgressBar();
    this.setUpBroadcastReceiver();
    startService( Intent(this, BackgroundService::class.java));


}