Как мне остановить приложение автоматическое освещение моего устройства Android при тестировании?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как мне остановить приложение автоматическое освещение моего устройства Android при тестировании?

Сообщение Anonymous »

Я тестирую аутентификацию с мобильным приложением. Я использую службу аутентификации Firebase. Я проверил его один раз перед использованием устройства Android, и хотел бы протестировать его снова. Шаги заключаются в следующем: < /p>

Приложение запускает экран аутентификации (Firebaseui auth) < /li>
Если это первый раз, когда пользователь вошел в систему, это приведет их к экрану фрагмента, чтобы создать свое USERNAME < /li>
, это приведет их на главный экран. /> < /ol>
Код для этого ниже: < /p>
class LoginFragment: Fragment() {

private val TAG = "LoginFragment"

private var _binding: FragmentLoginBinding? = null
private val binding
get() = checkNotNull(_binding) {
"Cannot access binding because it is null, is the view visible?"
}

private val loginViewModel: LoginViewModel by viewModels()

// Creates ActivityResultLauncher to register a callback for FirebaseUI Activity result contract
private val signInLauncher = registerForActivityResult(
FirebaseAuthUIActivityResultContract(),
) { res ->
this.onSignInResult(res)
}

// Authentication providers
val providers = arrayListOf(
AuthUI.IdpConfig.EmailBuilder().build(),
AuthUI.IdpConfig.GoogleBuilder().build()
)

//creates custom layout
val customLayout = AuthMethodPickerLayout.Builder(R.layout.fragment_login)
.setGoogleButtonId(R.id.google_sign_in)
.setEmailButtonId(R.id.email_sign_in)
.build()

// Creates and launches sign-in intent
val signInIntent = AuthUI.getInstance()
.createSignInIntentBuilder().setAvailableProviders(providers)
.setIsSmartLockEnabled(false, true).setAuthMethodPickerLayout(customLayout).build()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

}

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentLoginBinding.inflate(inflater, container, false)
return binding.root
}

override fun onStart() {
super.onStart()
val currentUser = FirebaseAuth.getInstance().currentUser
if (currentUser == null) {
signInLauncher.launch(signInIntent)
} else {
Log.e("Auth", "onStart action_login_to_mainline")
findNavController().navigate(R.id.action_login_to_mainline)
}
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}

fun onSignInResult(result: FirebaseAuthUIAuthenticationResult) {
val response = result.idpResponse
if (result.resultCode == RESULT_OK) {
//successfully signed in, set up username if first time logging in
//TODO: if user has already signed in, redirect to login with a message
val user = FirebaseAuth.getInstance().currentUser
val db = FirebaseFirestore.getInstance()
db.collection("users").document(user!!.uid).get()
.addOnSuccessListener { document ->
if (!document.exists()) {
// User doesn't exist in Firestore, treat as new user
Log.d("Auth", "User not found in Firestore, navigating to username setup")
findNavController().navigate(R.id.action_login_to_setusername)
} else {
// User exists in Firestore, proceed to main screen
Log.d("Auth", "User found in Firestore, navigating to main")
findNavController().navigate(R.id.action_login_to_mainline)
}
}
.addOnFailureListener { e ->
Log.e("Auth", "Error checking user existence: ${e.message}", e)
// Important: Add navigation to username setup here as fallback
findNavController().navigate(R.id.action_login_to_setusername)
}
}
}
< /code>
} < /p>
Все 3 шага были успешно выполнены в первый раз, когда я его тестировал. Я изменил несколько вещей с учетом пользовательского интерфейса и хотел бы протестировать его снова, но шаг 2 пропускается. Это происходит в OnStart (), и он выполняет еще, когда я хочу, чтобы он выполнил if. Как это исправить? База данных < /li>
< /ul>
Я удаляю приложение на своем устройстве каждый раз, когда пытаюсь протестировать его. Я уверен, что в базе данных или аутентификаторе ничего не хранится, так как он отображается как пустое на платформе Google Cloud. Если требуется дополнительная информация, дайте мне знать! Я потерялся в отношении того, что делать.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... en-testing
Ответить

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

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

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

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

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