android开发邮件客户端时,怎么检测邮件账户是否有未读邮件?
android开发邮件客户端时,怎么检测邮件账户是否有未读邮件?,希望大家给点意见或者推荐一下参考资料也行。 Android开发 邮件 --------------------编程问答-------------------- Android 4.0网络编程详解中文版(全)下载地址
http://download.csdn.net/detail/wangxiangdong_sl/5267919 --------------------编程问答-------------------- 资源很大,我先看看,谢谢 --------------------编程问答--------------------
点击错了引为自己的了,资源很大,我先看看,谢谢 wangxiangdong_sl --------------------编程问答-------------------- 只能发送HTTP请求 定时监测 --------------------编程问答--------------------
这也是一种办法,不知道还有没有其它的,谢谢 --------------------编程问答-------------------- 不知道你的未读邮件的定义是什么?是邮箱中的状态是未读状态的么?如果是这样的话需要要用IMAP协议。
如果只是新邮件可以用IMAP或者POP3.
使用POP3需要客户端做定时轮询检查服务器是否有新邮件,如果用IMAP可以使用IMAP IDLE做Push,就是推送。
你还是先了解一下邮件相关协议吧 --------------------编程问答-------------------- 标准的邮箱协议不是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