有未读邮件,桌面图标右上角没有显示未读邮件的数量

来源:互联网 发布:真实快递单号软件 编辑:程序博客网 时间:2024/05/04 17:38

此问题出现在android6.0上面
桌面显示未读数量的圆点一般都是接收广播的intent,不同厂商的接收的格式不同,具体可以咨询所开发的厂商,这里主要记录如何获取未读邮件数量,代码如下:

import com.android.emailcommon.provider.EmailContent;import com.android.emailcommon.provider.EmailContent.MessageColumns;import com.android.emailcommon.provider.EmailContent.MailboxColumns;import com.android.emailcommon.provider.Mailbox;public static int getUnreadEmailCount(Context context){        return EmailContent.count(context,                com.android.emailcommon.provider.EmailContent.Message.CONTENT_URI,                    MessageColumns.MAILBOX_KEY + " IN (SELECT " + MailboxColumns._ID                        + " FROM " + Mailbox.TABLE_NAME + " WHERE " + MailboxColumns.TYPE                            + "=" + Mailbox.TYPE_INBOX + ") AND " + MessageColumns.FLAG_READ + "=0",null);    }//发送显示的广播,此针对宇龙lancher的桌面的email图标,其他可参考这个形式public static void sendUnreadCountIntent(Context context){        Intent intent = new Intent();        intent.setAction("yulong.intent.action.SHOW_NUM_CHANGED");        intent.putExtra("packageName", "com.android.email");        intent.putExtra("showNum", getUnreadEmailCount(context));        intent.putExtra("className", "com.android.email.activity.Welcome");        context.sendBroadcast(intent);    }

需要在开机完成后发送一次,代码需要加在

EmailBroadcastProcessorService.javaonBootCompleted()函数里sendUnreadCountIntent(this);

另外再读掉邮件后需要更新数据,只需要在离开邮件回到桌面是更新即可,代码可以写在

MailActivity.java 的 onStop()里,为了防止activity意外被直接杀死可以在onDestroy()里面也加上以下代码:
sendUnreadCountIntent(MailActivity.this);

1 0
原创粉丝点击