Согласно изменениям в 8.0 , учетные записи недоступны только с разрешением GET_ACCOUNTS
.Вы также должны потребовать, чтобы пользователь выбрал учетную запись, используя AccountManager.newChooseAccountIntent
, например, так:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if(checkSelfPermission(Manifest.permission.GET_ACCOUNTS) == PackageManager.PERMISSION_GRANTED) {
val intent = AccountManager.newChooseAccountIntent(null, null, arrayOf("com.google"), null, null, null, null)
startActivityForResult(intent, 42)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
if (requestCode == 42)
val accountManager = AccountManager.get(this)
val accounts = accountManager.getAccountsByType("com.google")
accounts.forEach {
Log.v(localClassName, it.toString())
}
}
}
Как указано в документации для AccountManager.newChooseAccountIntent
:
Выбранная учетная запись помечается для вызывающего абонента как VISIBILITY_USER_MANAGED_VISIBLE (см. SetAccountVisibility (Account, String, int)) и будет возвращена ему при последующих вызовах getAccountsByType (String)).
, поэтому вам следует тольконеобходимо выбрать учетную запись один раз, а затем система должна запомнить этот выбор для последующих вызовов на AccountManager.getAccountsByType
.