Просто быстрый фрагмент моего кода:
Инициализация:
mCredential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(), SCOPES)
.setBackOff(new ExponentialBackOff());
Затем я запускаю программу выбора:
startActivityForResult(mCredential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
Затем в ActivityForResult
if (resultCode == RESULT_OK && data != null && data.getExtras() != null) {
String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
if (accountName != null) {
PersistentUtil.persistGmailName(this, accountName);
mCredential.setSelectedAccountName(accountName);
checkDataAccess();
}
}
Где checkDataAccess:
java.lang.Thread thread = new java.lang.Thread(new Runnable() {
@Override
public void run() {
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
Gmail mService = new com.google.api.services.gmail.Gmail.Builder(
transport, jsonFactory, mCredential)
.setApplicationName(getResources().getString(R.string.app_name))
.build();
try {
Gmail.Users users = mService.users();
Gmail.Users.Messages messages = users.messages();
Gmail.Users.Messages.List me = messages.list("me");
ListMessagesResponse temp = me.execute();
// if no error is thrown then, we are good to go
onGmailFinished();
// parseMessageList(mService, temp);
} catch (UserRecoverableAuthIOException e) {
startActivityForResult(
((UserRecoverableAuthIOException) e).getIntent(),
REQUEST_AUTHORIZATION);
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
ВЫПУСК
ListMessagesResponse temp = me.execute();
в конечном итоге вызовет метод getAccounts()
, который ищет пользователя в учетных записяхкоторые настроены на устройстве.Он вернет ноль, если разрешение GET_ACCOUNTS
не предоставлено.
КАК я могу сделать так, чтобы я не зависел от разрешения GET_ACCOUNTS, каким-то образом настроить учетную запись gmail независимо от устройстваСчета?Я не хочу запрашивать разрешение GET_ACCOUNTS.
Есть ли способ сделать это или мне всегда нужно идти через intentChooser и впоследствии зависеть от разрешения GET_ACCOUNTS?(