Я работаю с Google Диском Api, и теперь у меня есть простое приложение (похоже на https://github.com/googledrive/android-quickstart), но я хочу добавить страницу входа с двумя параметрами (логин с Google Drive и вход в систему как гость) только если пользователь не будет входить в учетную запись. Как я могу проверить это? Я хочу показать это действие только тогда, когда после нажатия «Войти с помощью Google Drive» я увижу диалог со списком учетных записей.Google Drive Api проверяет, подписан ли пользователь в
ответ
На Google Диске нет гостевого входа. Только учетные записи, зарегистрированные на вашем устройстве Android (см. Настройки> Учетные записи), могут получить доступ к Диску (их GooDrives).
Существует два способа обработки/выбора учетной записи.
1/Вы НЕ указать действительный (зарегистрированный на устройстве) адрес электронной почты аккаунта
GoogleApiClient GAC = new GoogleApiClient.Builder(context)
//.setAccountName(email)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(...)
.addOnConnectionFailedListener(...)
.build();
и GooPlaySvcs будет всплывающее диалоговое окно выбора учетной записи, позволяя ваш пользователю выбрать действительную учетную запись или создать новую. Ваше приложение не будет знать, какую учетную запись пользователь выбрал/создал.
2/Вы ДЕЛАТЬ указать действительный (зарегистрированный на устройства) по электронной почте счета
GoogleApiClient GAC = new GoogleApiClient.Builder(context)
.setAccountName(email)
.addApi(Drive.API)
.addScope(Drive.SCOPE_FILE)
.addConnectionCallbacks(...)
.addOnConnectionFailedListener(...)
.build();
Теперь, как вы получите email
? Вы не можете указать только произвольное письмо. Опять же, вы должны использовать один из зарегистрированных единиц аппарата через account picker
:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
...
static final int REQ_ACCPICK = 999;
...
startActivityForResult(AccountPicker.newChooseAccountIntent(null, null,
new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, null, null, null, null), REQ_ACCPICK);
...
@Override
protected void onActivityResult(int request, int rslt, Intent data) {
if (
request == REQ_ACCPICK &&
rslt == RESULT_OK &&
data != null && data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME) != null
)
email = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
...
Пожалуйста, смотрите типичную обработку этого, следуя REQ_ACCPICK
в этом code. Вам необходимо добавить менеджера аккаунта (например, класс UT.AM в упомянутой демонстрации) и сохранить адрес электронной почты текущей учетной записи.
Удачи
Я знаю, что на Google Диске нет гостевого входа. Я хочу иметь два варианта: войти в систему с помощью Google Drive или работать в качестве гостя (без функций диска Google), поэтому мне нужно отображать эти параметры только тогда, когда пользователь выходит из Google (после выбора первого варианта я не увижу учетную запись). Мне нужно только знать, вошел ли пользователь в систему или нет. – Giks91
Диспетчер личных счетов приложения с сохранением (вариант № 2) в разделе [GDAA] (https://developers.google.com/drive/android/intro). Или (в разделе [REST Api] (https://developers.google.com/drive/v3/web/about-sdk)) вы можете использовать GoogleAccountCredential.usingOAuth2 (...). SetSelectedAccountName (email)/getSelectedAccount(). Оба должны иметь разрешение «GET_ACCOUNTS». – seanpj