解决:HotSeat短信图标提醒有误
【操作步骤】正常收发短信、彩信。
【测试结果】所有短信均已阅读,但在HOME界面的短信图标仍提示有一条短信未读。重启后仍存在。
经过分析,导致该情况的主要原因为当彩信已读的时候,launcher中进行查询的语句有问题。因为当彩信的状态为已读后pdu表中的read字段的值会由0变为1,而彩信点击进行下载,下载成功后信息类型由130变为132.我们可以到处数据表进行下一步分析。
现在我们从数据库表中的数据进行分析,分析前我们需要解释一下,read的值为0表示未读,为1表示已读,m_type的值为130表示未下载,为132表示已下载。
我们从数据库表中可以看到当前信息状态全部为已读,而m_type中值为130的为条数为8条,132的值为2条,也就是说当前有8条彩信息未进行下载。按照正常的逻辑来说,在hotseat中不应该存在未读消息的提醒,但是在hotseat中提示未读消息为8条。因此我们断定该问题有查询语句所导致。我们找到launcher应用下Launcher.java中的相关方法进行分析:
private void updateDecorate(int whichIcon,ShortcutInfo info){
final ArrayList<ShortcutInfo> shortcuts = new ArrayList<ShortcutInfo>();
if(info != null){
shortcuts.add(info);
}
getTargetShortcuts(whichIcon == UPDATE_MMS_ICON ? "com.android.mms" : "activities.DialtactsActivity",shortcuts);
if(shortcuts.size() == 0){
return;
}
new AsyncTask<Integer,Void,Integer>(){
@Override
protected Integer doInBackground(Integer... whichIcon){
int count = 0;
switch(whichIcon[0]){
case UPDATE_MMS_ICON:
Cursor mmsCursor = getContentResolver().query(Uri.parse("content://mms/inbox"),
null,"m_type = 128 or m_type = 130 or m_type = 132 and read = 0",null,null);
if(mmsCursor != null){
count += mmsCursor.getCount();
mmsCursor.close();
}
Cursor smsCursor = getContentResolver().query(Uri.parse("content://sms"),null,"type = 1 and read = 0",null,null);
if(smsCursor != null){
count += smsCursor.getCount();
smsCursor.close();
}
break;
case UPDATE_PHONE_ICON:
Cursor cursor = getContentResolver().query(Calls.CONTENT_URI,new String[]{
Calls.NUMBER,Calls.TYPE,Calls.NEW},null,null,Calls.DEFAULT_SORT_ORDER);
if(cursor != null){
while(cursor.moveToNext()){
if((cursor.getInt(cursor.getColumnIndex(Calls.TYPE)) == Calls.MISSED_TYPE)
&& (cursor.getInt(cursor.getColumnIndex(Calls.NEW)) == 1)){
count++;
}
}
cursor.close();
}
break;
default:
this.cancel(true);
break;
}
return count;
}
@Override
protected void onPostExecute(Integer result){
if(result != 0){
for(ShortcutInfo shortcut : shortcuts){
if(shortcut.view != null){
shortcut.view.decorateIcon(String.valueOf(result));
}
}
} else{
for(ShortcutInfo shortcut : shortcuts){
if(shortcut.view != null){
shortcut.view.clearDecorate();
}
}
}
}
}.execute(whichIcon);
}
上述代码中为原始代码,加粗标红的代码为查询语句的where子句部分,我们如果对数据库了解的话,我们会发现这里的优先级有个问题,因此我们做出修改,问题如下:、
"(m_type = 128 or m_type = 130 or m_type = 132 )and read = 0"
问题迎刃而解。
解决:HotSeat短信图标提醒有误的更多相关文章
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等
本文属于原创,转载请著名出处:http://flysnow.iteye.com/blog/906770 写道 在我们开发一些如短消息.应用商店等应用时,会考虑在短消息的图标上加上未读短信的数量,在应用 ...
- day80_10_29git冲突解决与短信服务redis
一.开发中的操作. 在项目开发中,在工作区进行开发,开发结束后提交到本地版本库. 再拉取远程仓库,具体如下: """ 1.开发前,拉一次远程仓库 2.工作区进行开发 3. ...
- django缓存和跨域解决和短信验证码的使用
缓存 在实际项目中,存在大量的数据检索,比如我们刷微博的时候,刚开始加载速度慢一点,然后第一次加载完毕之后,如果你此时的手机没有网络,但是你发现你的微博还是可以照样刷,但是刷到一定的页面就走不动了,那 ...
- Android 类似未读短信图标显示数字效果的分析
之前一直以为是应用本身在对图标进行修改,看了源码之后发现其实主要的工作并不是应用自己完成的,主要的工作在是launcher里面完成的. 关于系统里面类似未读短信的具体处理流程如下, 原理 一个应用要实 ...
- Zabbix 安装及微信短信提醒
Zabbix简介 Zabbix 近几年得到了各大互联网公司的认可,当然第一点归功与它强大的监控功能,第二点免费开源也得到了广大用户的青睐.Zabbix 能将操作系统中的绝大部分指标进行监控,比如(CP ...
- 发送短信——java
闲来无事研究一下调用第三方接口发送短信的技术 这一次我们使用阿里的短信服务 一.进行平台相关服务的注册和设置 下面请参照阿里的短信服务文档进行设置,只要按照文档步骤来差不多30分钟就能搞定服务注册: ...
- CentOS 6.2+Nginx+Nagios,手机短信和qq邮箱提醒
http://chenhao6.blog.51cto.com/6228054/1323192 标签:软件包 配置文件 nagios 服务端 监控 原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
- Nagios 安装及微信短信提醒
引言 Nagios 作为业界非常强大的一款开源监视系统. 监控网络服务(SMTP.POP3.HTTP.NNTP.PING 等): 监控主机资源(处理器负荷.磁盘利用率等): 简单地插件设计使得用户可以 ...
- iphone 群发短信 闪退 彻底解决
用iphone5群发短信,经常闪退,一般人多的时候,最容易出现 试了很多办法,ifile改sms.db等权限等 没有根本解决 一次操作中,发现群发时,每个号码都会显示菊花,貌似在检测什么 突然意识到, ...
随机推荐
- hdu 3367(Pseudoforest ) (最大生成树)
Pseudoforest Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- hdu 4405Aeroplane chess(概率DP)
Aeroplane chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 图片填充UIImageView大小不对
http://www.2cto.com/kf/201507/412894.html UIView的contentMode属性: 默认为Scale To Fill,会保留view的比例,不会完全按照设定 ...
- HTML中的一些常见的事件句柄
onclick 所有类似按钮的表单元素和标记<a>及<area>都支持该处理程序.当用户点击元素时会触发它.如果onclick处理程序返回false,则浏览器不执行任何与按钮或 ...
- C#泛型接口
为泛型集合类或表示集合中项的泛型类定义接口通常很有用.对于泛型类,使用泛型接口十分可取,例如使用 IComparable<T> 而不使用 IComparable,这样可以避免值类型的装箱和 ...
- windows系统下Tomcat与Apache服务器集成
说明:此文是看书真实试验成功的,书中提到了不同版本不兼容的问题,但是很荣幸我没碰到,此例可供参考. 本文假设你已经有了java环境和tomcat,你已经熟悉tomcat的应用. Jdk 1.7.0_5 ...
- bat产生随机数并复制文件及生成文件列表
有这样一个场景:我需要将同一个文件复制为上千个文件,并且文件名应为随机数.为了简单起见,不想写程序,直接写个BAT来,方便,简单,易用: 1. 搞定用BAT产生32位随机数,存为变量并使用,保存以下代 ...
- iOS https(SSL/TLS)数据捕获
要捕获iPhone上的appstore的数据还真的没那么容易,以前介绍的那些使用代理手工导入证书的方法已经完全失效了,结果就是安装证书之后再打开appstore也无法正常的建立连接.按照我的分析其实是 ...
- hdu 4617 Weapon
http://acm.hdu.edu.cn/showproblem.php?pid=4617 三维几何简单题 多谢高尚博学长留下的模板 代码: #include <iostream> #i ...
- SQL SERVER 创建作业
),, , , , , ),SERVERPROPERTY(N, , , ...