Чтение писем Gmail с помощью SDK для Android

Я хочу читать письма Gmail в своем собственном приложении для Android. Есть ли способ сделать это с помощью Android-sdk? Если нет, то каковы другие варианты? Синтаксический анализ gmail-атома?

Я спрашиваю и отвечаю на этот вопрос. Вам нужен код Gmail.java (в вопросе есть ссылка), и вы должны понимать, что вы не должны использовать этого недокументированного провайдера

Есть ли хорошие примеры коротких кодов, которые просто читают новое сообщение Gmail?

Возможно использование API GMail, вот несколько шагов, которые я нашел полезными.

  1. Начните с официального образца, чтобы запустить GMailAPI, см. Здесь
  2. Следуя инструкциям, я счел полезным прочитать о подписании приложения здесь , чтобы получить Step1 + 2 в правильном примере.
  3. С помощью примера вы можете использовать информацию здесь для доступа к сообщениям. Вы можете, например, заменить реализацию в MakeRequestTask.getDataFromApi
  4. Обязательно добавьте, по крайней мере, область только для чтения для правильных разрешений. В образце области определены в массиве:

    private static final String[] SCOPES = { GmailScopes.GMAIL_LABELS, mailScopes.GMAIL_READONLY };

  5. Мое намерение состояло в том, чтобы прочитать все предметы. Я использовал следующий код (который является адаптированным методом getDataFromApi из официального образца):

      private List<String> getDataFromApi() throws IOException { // Get the labels in the user's 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; }