Используя Kotlin, я хочу убедиться, что пользователь вошел в PlayStore, прежде чем отправить его для обновления приложения. Найти устарели.
nocredentialexception всегда выбрасывается, если я не добавляю учетные данные в моем приложении. < /p>
private suspend fun checkGoogleAccount(context: Context) {
val credentialManager = CredentialManager.create(context)
try {
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(false)
.setAutoSelectEnabled(false)
.setServerClientId(getString(R.string.web_client_id))
.build()
val request: GetCredentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(googleIdOption)
.build()
val credentialResponse = credentialManager.getCredential(
context = context,
request = request
)
android.util.Log.e("TAG","credentialResponse ${credentialResponse.credential}")
} catch (e: GetCredentialCancellationException) {
android.util.Log.e("TAG", "GetCredentialCancellationException ${e.message}")
} catch (e: NoCredentialException) {
android.util.Log.e("TAG", "NoCredentialException")
} catch (e: GetCredentialException) {
android.util.Log.e("TAG", "GetCredentialException $e")
} catch (e: Exception) {
android.util.Log.e("TAG", "Exception ${e.message}")
}
}
< /code>
Я также пытался использовать ReviewManagerFactory, как предложено в этом посте, но он всегда говорит мне, что пользователь вошел в систему, когда он не: < /p>
val reviewManager = ReviewManagerFactory.create(activity)
val request = reviewManager.requestReviewFlow()
request.addOnCompleteListener { task ->
if (task.isSuccessful) {
val reviewInfo = task.result
val flow = reviewManager.launchReviewFlow(context as Activity, reviewInfo)
flow.addOnCompleteListener { launchTask ->
if (launchTask.isSuccessful) {
android.util.Log.e("TAG", "User is logged, goto playStore")
} else {
android.util.Log.e("TAG", "User in not logged, goto googleLogin")
}
}
} else {
android.util.Log.e("TAG", "task Fail: ${task.exception}")
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... play-store