当前位置:编程学习 > wap >>

android开发邮件客户端时,怎么检测邮件账户是否有未读邮件?

android开发邮件客户端时,怎么检测邮件账户是否有未读邮件?,希望大家给点意见或者推荐一下参考资料也行。 Android开发 邮件 --------------------编程问答-------------------- Android 4.0网络编程详解中文版(全)
下载地址
http://download.csdn.net/detail/wangxiangdong_sl/5267919 --------------------编程问答--------------------
引用 楼主 lht0211 的回复:
android开发邮件客户端时,怎么检测邮件账户是否有未读邮件?,希望大家给点意见或者推荐一下参考资料也行。
              
                  Android开发
                  邮件
资源很大,我先看看,谢谢 --------------------编程问答--------------------
引用 1 楼 wangxiangdong_sl 的回复:
Android 4.0网络编程详解中文版(全)
下载地址
http://download.csdn.net/detail/wangxiangdong_sl/5267919

点击错了引为自己的了,资源很大,我先看看,谢谢 wangxiangdong_sl --------------------编程问答-------------------- 只能发送HTTP请求 定时监测 --------------------编程问答--------------------
引用 4 楼 wenwei19861106 的回复:
只能发送HTTP请求 定时监测

这也是一种办法,不知道还有没有其它的,谢谢 --------------------编程问答-------------------- 不知道你的未读邮件的定义是什么?是邮箱中的状态是未读状态的么?如果是这样的话需要要用IMAP协议。
如果只是新邮件可以用IMAP或者POP3.
使用POP3需要客户端做定时轮询检查服务器是否有新邮件,如果用IMAP可以使用IMAP IDLE做Push,就是推送。
你还是先了解一下邮件相关协议吧 --------------------编程问答--------------------
引用 4 楼 wenwei19861106 的回复:
只能发送HTTP请求 定时监测
标准的邮箱协议不是HTTP的 --------------------编程问答--------------------
引用 7 楼 ultrapro 的回复:
引用 4 楼 wenwei19861106 的回复:
只能发送HTTP请求 定时监测标准的邮箱协议不是HTTP的




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;
    }


--------------------编程问答-------------------- /**
 * 【判断此邮件是否已读,如果未读返回返回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;
}
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,