Как читать разговор с помощью Gmail.java

1

Мне нужно прочитать сообщения/беседу gmail, чтобы сделать программу для слепых. Я использую Gmail.java для доступа к базе данных gmail. Проблема в том, что я не знаю, как получить доступ к телу писем.

Кто-нибудь может мне помочь?

Небольшая выдержка моего кода:

Uri uri = Uri.parse(               Gmail.AUTHORITY_PLUS_CONVERSATIONS + аккаунт + "/" );       Курсор cursorConversacion = contentResolver.query(               uri, Gmail.CONVERSATION_PROJECTION, null, null, null);

    int j = 1;
    //Comprobamos que hay cursor
    if (cursorConversacion.moveToFirst()){

        Gmail gmail = new Gmail(mContext.getContentResolver());
        ConversationCursor cc = new ConversationCursor(gmail,account,cursorConversacion);

        do{
            String cuenta = cc.getAccount();
            String snippet = cc.getFromSnippetInstructions();
            String subject = cc.getSubject();
            String numMessages = "" +  cc.getNumMessages();
            String conversationID = "" + cc.getConversationId();

            Log.d("DEBUG","\n\n\n MENSAJES " + j + " \n\n" + 
                    " ID: " + conversationID +
                    " Num messages: " + numMessages + 
                    " Subject: " + subject + 
                    "\nCuenta: " + cuenta +
                    " snippet: " + snippet


            );

            //MessageCursor a partir de la conversacion
            Uri uriMessages = Uri.parse(
                    Gmail.AUTHORITY_PLUS_CONVERSATIONS + account + "/" + conversationID + "/messages");
            Cursor cursorMessages = contentResolver.query(
                    uri, Gmail.MESSAGE_PROJECTION, null, null, null);


            if (cursorMessages.moveToFirst()){
                int k=1;
                do{
                    MessageCursor mc = new MessageCursor(gmail, contentResolver, account, cursorMessages);
                    Log.d("DEBUG","Mensaje " + k + " " + mc.getBody());

                    k++;
                }while ( (k < 10) && (cursorMessages.moveToNext()) ) ;

            }



            j++;
        }while ( (j< 20) && (cursorConversacion.moveToNext()) );

    }

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

Доступ к разговору работает, но messageCursor doesnt. Я знаю/полагаю, что использование messageCursor не для сообщения (сообщение о разговоре), а я знаю, что использование некомментированного провайдера - плохая идея (если у вас есть лучшая подсказка меня, пожалуйста!!!!), но это лучшее решение, которое я нашел, чтобы решить мою проблему.

Ty за помощью и извините за мой английский.

Теги:
gmail
messages

1 ответ

0
Лучший ответ

Автоответчик: D

public void getMails(Context mContext){
    String account="[email protected]";
    ContentResolver contentResolver= mContext.getContentResolver();
    Cursor cursor = contentResolver.query(ACCOUNT_URI, null, null, null, null);



    Uri uri = Uri.parse(
            Gmail.AUTHORITY_PLUS_CONVERSATIONS + account + "/");
    Cursor cursorConversacion = contentResolver.query(
            uri, Gmail.CONVERSATION_PROJECTION, null, null, null);

    int j = 1;
    //check cursor
    if (cursorConversacion.moveToFirst()){

        Gmail gmail = new Gmail(mContext.getContentResolver());
        ConversationCursor cc = new ConversationCursor(gmail,account,cursorConversacion);

        do{ //extract some data for the example
            String cuenta = cc.getAccount();
            String snippet = cc.getFromSnippetInstructions();
            String subject = cc.getSubject();
            String numMessages = "" +  cc.getNumMessages();
            String conversationID = "" + cc.getConversationId();

            Log.d("DEBUG","\n\n\n MENSAJES " + j + " \n\n" + 
                    " ID: " + conversationID +
                    " Num messages: " + numMessages + 
                    " Subject: " + subject + 
                    "\nCuenta: " + cuenta +
                    " snippet: " + snippet


            );


            MessageCursor mc = new Gmail(contentResolver).getMessageCursorForConversationId(account, cc.getConversationId());


            if (mc.getCursor().moveToFirst()){
                int k=1;
                do{
                    //MessageCursor mc = new MessageCursor(gmail, contentResolver, account, cursorMessages);
                    Log.d("DEBUG","Mensaje " + k + " " + mc.getBody());
                    Log.d("DEBUG",mc.getFromAddress());

                    k++;
                }while ( (k < 10) && (mc.next()) ) ;

            }



            j++;
        }while ( (j< 20) && (cursorConversacion.moveToNext()) );

    }

ЭТОТ КОД ИСПОЛЬЗУЕТ Gmail.java(ссылка в моем сообщении вопроса), и это пример, чтобы извлечь тело писем. Вы можете извлекать другие атрибуты, такие как mailFrom или отправка даты

Ещё вопросы

Сообщество Overcoder
Наверх
Меню