Чтение писем Gmail с помощью SDK для Android
Я хочу читать письма Gmail в своем собственном приложении для Android. Есть ли способ сделать это с помощью Android-sdk? Если нет, то каковы другие варианты? разбор атома gmail?
Ответы
Ответ 1
Я спрашиваю и отвечаю на этот вопрос здесь.
Вам нужен код Gmail.java(в вопросе есть ссылка), и вы должны понимать, что вы не должны использовать этого недокументированного провайдера
Есть ли хорошие примеры коротких примеров, которые просто читают новое сообщение gmail?
Ответ 2
Возможно использование API GMail, вот несколько шагов, которые я нашел полезными.
- Начните с официального примера, чтобы запустить GMailAPI, см. здесь
- Следуя инструкциям, я нашел полезным прочитать о подписании приложения здесь, чтобы получить Step1 + 2 в правом правиле.
- При запуске примера вы можете использовать информацию здесь для доступа к сообщениям. Вы можете, например, замените реализацию в MakeRequestTask.getDataFromApi
-
Обязательно добавьте, по крайней мере, область только для чтения для правильных разрешений. В образце области определены в массиве:
private static final String[] SCOPES = { GmailScopes.GMAIL_LABELS, mailScopes.GMAIL_READONLY };
-
Мое намерение состояло в том, чтобы прочитать все предметы. Я использовал следующий код (который является адаптированным методом getDataFromApi из официального образца):
private List<String> getDataFromApi() throws IOException {
// Get the labels in the user account. "me" referes to the authentized user.
String user = "me";
List<String> labels = new ArrayList<String>();
ListMessagesResponse response = mService.users().messages().list(user).execute();
for (Message message : response.getMessages()) {
Message readableMessage = mService.users().messages().get(user, message.getId()).execute();
if (readableMessage.getPayload() != null) {
for (MessagePartHeader header : readableMessage.getPayload().getHeaders()) {
if (header.getName().compareToIgnoreCase("Subject") == 0) {
labels.add(header.getValue());
}
}
}
}
return labels;
}