Мне нужно прочитать сообщения/беседу 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 за помощью и извините за мой английский.
Автоответчик: 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 или отправка даты