【问题标题】:How read a conversation using Gmail.java如何使用 Gmail.java 阅读对话
【发布时间】:2011-05-24 08:45:50
【问题描述】:

我需要阅读 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 无效。我知道/相信 messageCursor 的使用不是用于消息(对话的消息),并且我知道使用 undecommented 提供程序是一个坏主意(如果你有更好的告诉我,拜托!!!!)但这是我找到的解决我的问题的更好的解决方案。

Ty 寻求帮助,对不起我的英语。

【问题讨论】:

    标签: android gmail messages


    【解决方案1】:

    自动回答:D

    public void getMails(Context mContext){
        String account="blablabla_accountgmail@gmail.com";
        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 或 date send

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-12
      • 2017-08-11
      • 2022-09-29
      • 2016-03-10
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 2012-02-10
      相关资源
      最近更新 更多