Android, получите адрес электронной почты рабочего профиля пользователя в Oreo и выше - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть приложение Android, которое развернуто для пользователей Android Enterprise в моей компании через управляемый магазин Play Store.У каждого пользователя есть рабочий профиль на своем устройстве.Адрес электронной почты этой учетной записи является рабочим адресом электронной почты пользователя.

Приложению требуется доступ к рабочему адресу электронной почты пользователя для синхронизации пользовательских данных с сервером.

На устройствах под управлением версийAndroid до 8 (Oreo), этот код прекрасно работает:

AndroidManifest.xml

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

Код

public String getUserEmail() {

    AccountManager manager = AccountManager.get(this);
    Account[] accounts = manager.getAccounts();
    List<String> emails = new ArrayList<String>();

    // On Oreo+, the length of accounts is 0.
    for (Account account : accounts) {
        if (account.name.endsWith("@companyname.com")) {
            emails.add(account.name);
        }
    }
    if (!emails.isEmpty() && emails.get(0) != null) {
        return emails.get(0);
    }
    return null;
}

В Oreo и выше результат AccountManager.getAccounts() всегда имеет нулевую длину.

Это изменение поведения задокументировано Google: (https://developer.android.com/about/versions/oreo/android-8.0-changes.html#aaad). Разрешение GET_ACCOUNTS больше не достаточно для получения учетных записей, и мы должны использовать AccountManager.newChooseAccountIntent().

Этонежелательно, потому что я не хочу, чтобы пользователь выбирал нерабочую учетную запись для использования с этим приложением. Мне нужен только рабочий адрес электронной почты.

Существует ли способ для приложения Android Enterprise получить пользователярабочий адрес электронной почты без использования AccountManager.newChooseAccountIntent()? Может ли администратор EMM сделать это свойство доступным для приложения через Android Enterprise SDK? Или есть другой способ получить рабочий адрес электронной почты пользователя?

...