android开发邮件客户端时,怎么检测邮件账户是否有未读邮件?,希望大家给点意见或者推荐一下参考资料也行。Android开发邮件

解决方案 »

  1.   

    Android 4.0网络编程详解中文版(全)
    下载地址
    http://download.csdn.net/detail/wangxiangdong_sl/5267919
      

  2.   

    点击错了引为自己的了,资源很大,我先看看,谢谢 wangxiangdong_sl
      

  3.   

    只能发送HTTP请求 定时监测
      

  4.   

    不知道你的未读邮件的定义是什么?是邮箱中的状态是未读状态的么?如果是这样的话需要要用IMAP协议。
    如果只是新邮件可以用IMAP或者POP3.
    使用POP3需要客户端做定时轮询检查服务器是否有新邮件,如果用IMAP可以使用IMAP IDLE做Push,就是推送。
    你还是先了解一下邮件相关协议吧
      

  5.   


    public class NewEmailContentObserver extends ContentObserver {
        private Context mContext;
        private boolean mIsUpdate = false;
        public static int sTempEmailCount;
        public static int sNewEmailCount;
        private final static int UPDATE_START = 0x1000;
        private final static int DELAY_TIME = 10000;
        
        public NewEmailContentObserver(Context context, Handler handler) {
            super(handler);
            mContext = (Launcher)context;
        }    @Override
        public boolean deliverSelfNotifications() {
            return super.deliverSelfNotifications();
        }    @Override
        public void onChange(boolean selfChange) {
            mUpdate.removeMessages(UPDATE_START);
            mUpdate.sendEmptyMessageDelayed(UPDATE_START, DELAY_TIME);
            if ((mContext.getWorkspace() != null) && mContext.getWorkspace().mIsDragOccuring) {
                mIsUpdate = true;
            }    }    private final Handler mUpdate = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                case UPDATE_START:
                    sNewEmailCount = Utilities.getNewEmailCount(mContext);
                    if (sNewEmailCount != sTempEmailCount) {
                        new Thread(new Runnable() {
                            public void run() {
                                sTempEmailCount = sNewEmailCount;
                                if ((mContext.getWorkspace() != null) && mContext.getWorkspace().mIsDragOccuring) {
                                    mIsUpdate = true;
                                } else {
                                    mIsUpdate = false;
                                    mContext.updateNewEmail();
                                }
                            }
                        }).start();
                    }
                    break;
                default:
                    break;
                }
            }
        };
        public boolean getIsUpdate() {
            return mIsUpdate;
        }
        
        public void setIsUpdate(boolean isUpdate) {
            mIsUpdate = isUpdate;
        }
    }
        public static int getNewEmailCount(Context context) {
            int nNewEmail = 0;
            Cursor cur = null;
            try {
                cur = context.getContentResolver().query(Uri.parse("content://com.android.email.provider/mailbox"), 
                        new String[] {"sum(unreadCount)"},"type =?", new String[] {"0"}, null);  
                if (cur != null) {
                    cur.moveToFirst();
                    if (cur.getString(0) != null) {
                        nNewEmail = Integer.valueOf(cur.getString(0));
                    }
                }
            } catch (Exception ex) {
                Log.d(TAG, "getNewEmailCount: " + ex);
            }
            finally {
                if (cur != null) {
                    cur.close();
                }
            }
            return nNewEmail;
        }
      

  6.   

    /**
     * 【判断此邮件是否已读,如果未读返回返回false,反之返回true】
     */
    public boolean isNew(){
    boolean isnew = false;
    try {
    Flags flags = ((Message) mimeMessage).getFlags();
    Flags.Flag[] flag = flags.getSystemFlags();
    System.out.println("flags's length: " + flag.length);
    for (int i = 0; i < flag.length; i++) {
    if (flag[i] == Flags.Flag.SEEN) {
    isnew = true;
    System.out.println("seen Message.......");
    break;
    }
    }
    return isnew;
    } catch (MessagingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return isnew;
    }