CredentialManager, внедренный с помощью Hilt, выдает «Не удалось запустить пользовательский интерфейс селектора»Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 CredentialManager, внедренный с помощью Hilt, выдает «Не удалось запустить пользовательский интерфейс селектора»

Сообщение Anonymous »

У меня возникли проблемы с настройкой модуля CredentialManager через Hilt. На некоторых устройствах (особенно Redmi Note 9) при запросе входа в Google диспетчер учетных данных выдает сообщение «Не удалось запустить пользовательский интерфейс селектора. Подсказка: убедитесь, что параметр «контекст» является контекстом на основе активности».
Я подозреваю, что проблема заключается в том, что Hilt внедряет @ApplicationContext вместо контекста на основе активности, чтобы создать экземпляр CredentialManager, но в настоящее время я не знаю, как это исправить
Еще одно наблюдение: на некоторых других устройствах (например, Galaxy S23) этой ошибки не происходит, и пользовательский интерфейс входа отображается нормально.
моя аутентификация начинается с ViewModel с внедренным в нее AuthService:
@HiltViewModel
class AuthViewModel @Inject constructor(
private val authService: AuthService,
@ApplicationContext private val context: Context
) : ViewModel() {

fun onEvent(uiEvent: UiEvent) {
when (uiEvent) {
// ....
is UiEvent.OnGoogleSignIn -> {
viewModelScope.launch {
val currentUser = authService.googleSignIn().collect { result ->
// Handle the result
result.fold(
onSuccess = { authResult ->
_uiState.emit(AuthUiState.LoggedIn(authResult.user?.uid ?: ""))
},
onFailure = { exception ->
_uiState.emit(
AuthUiState.Error(
exception.message ?: "An error occurred"
)
)
}
)
}
}
}
}
}

подпись authService выглядит следующим образом (реализация входа в Google — это очень общий вариант, который можно найти в учебниках):
class AuthService @Inject constructor(
@ApplicationContext private val context: Context,
private val usuariosService: UsuariosService
)

А это его модуль:
@Module
@InstallIn(SingletonComponent::class)
object AuthModule {

@Provides
@Singleton
fun provideAuthClient(@ApplicationContext context: Context, usuariosService: UsuariosService): AuthService =
AuthService(context.applicationContext, usuariosService)
}

Если я попытаюсь изменить внедрение контекста authService на @ActivityContext, я получу длинную ошибку Hilt, в которой говорится:
error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method.
public abstract static class SingletonC implements HiltApplication_GeneratedInjector


Подробнее здесь: https://stackoverflow.com/questions/791 ... elector-ui
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»