Как получить количество непрочитанных писем Gmail (на андроиде)

Обратите внимание, что существует новый способ сделать это

Я пытался получить количество непрочитанных писем Gmail без удачи.

Я считал Gmail.java и gmail4j обе ссылки, вынутые из этого сайта от этого вопроса: Android - Как я могу узнать, сколько имеет непрочитанная электронная почта пользователь?

Но все еще считав все это и несколько других сайтов, которые говорили об этом конкретном предмете, которым остается мой вопрос:

Q: Как я могу получить Gmail Непрочитанное количество?

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

PS: Я хотел бы разъяснить, что я хочу сделать это, не имея необходимость просить у пользователя учетные данные.

Всего 2 добавляют, что некоторые цвета к вопросу позволяют мне показать Вам взгляды своего приложения.

alt text

Обратите внимание, что существует новый способ сделать это

8
задан Glorfindel 28 July 2019 в 23:07
поделиться

3 ответа

Вот фрагмент кода. Не уверен, что это работает, и не могу это проверить. Но я надеюсь, что это поможет вам продолжить расследование.

public static final class LabelColumns {
    public static final String CANONICAL_NAME = "canonicalName";
    public static final String NAME = "name";
    public static final String NUM_CONVERSATIONS = "numConversations";
    public static final String NUM_UNREAD_CONVERSATIONS = "numUnreadConversations";
}

public void queryLabels(){
    String account="email@company.com";
    Uri LABELS_URI = Uri.parse("content://gmail-ls/labels/");
    Uri ACCOUNT_URI = Uri.withAppendedPath(LABELS_URI, account);
    ContentResolver contentResolver=myActivity.getContentResolver();
    Cursor cursor = contentResolver.query(ACCOUNT_URI, null, null, null, null);

    //iterate over all labels in the account
    if (cursor.moveToFirst()) {
        int unreadColumn = cursor.getColumnIndex(LabelColumns.NUM_UNREAD_CONVERSATIONS);
        int nameColumn = cursor.getColumnIndex(LabelColumns.NAME);
        do {
            String name = cursor.getString(nameColumn);
            String unread = cursor.getString(unreadColumn);//here's the value you need
        } while (cursor.moveToNext());
    }
}

Требуется разрешение

<uses-permission android:name="com.google.android.gm.permission.READ_GMAIL"/>
22
ответ дан 5 December 2019 в 05:44
поделиться

Вот как я видел это в простом виджете для оконного менеджера awesome (да, это его имя :)). Оригинальный скрипт находится здесь: gmail.lua .

Основная идея состоит в том, чтобы просто использовать канал входящей почты и получать все письма (вы будете получать только сводки, а не весь контент) для специального тега «непрочитанные». URL-адрес https://mail.google.com/mail/feed/atom/unread , вам просто нужно получить его (конечно, после аутентификации), а затем проанализировать его.Вы можете использовать какой-нибудь синтаксический анализатор XML или просто регулярное выражение ( ([% d] +) ) - число, которое вы ищете, находится в начале, в тег.

Итак, это один из способов сделать это, довольно простой и «тупой», но эй, он работает: D Это может быть не лучшее решение, так как оно требует, чтобы вы загрузили весь канал (в зависимости от количества ваших непрочитанные сообщения и тип / качество соединения, это может быть не так быстро, как , просто получение количества непрочитанных сообщений), но, как обычно, тестирование в реальной жизни должно прояснить это :)

5
ответ дан 5 December 2019 в 05:44
поделиться

Возможно, вы можете использовать Gmail ContentProvider, см. http: // www .google.com / codesearch / p? hl = ru # uX1GffpyOZk / core / java / android / provider / Gmail.java & q = Gmail.java & sa = N & cd = 1 & ct = rc

Существует метод getNumUnreadConversations или вы можете использовать Observer .

0
ответ дан 5 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: