解决: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等权限等 没有根本解决 一次操作中,发现群发时,每个号码都会显示菊花,貌似在检测什么 突然意识到, ...
随机推荐
- 使用AndroidStudio编译NDK的方法及错误解决方案
参考资料: [android ndk]macos环境下Android Studio中利用gradle编译jni模块及配置:http://demo.netfoucs.com/ashqal/article ...
- hdu----(1402)A * B Problem Plus(FFT模板)
A * B Problem Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- Linux sed命令实例详解
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- oracle个人总结
oracle优化原则 1:insert 插入 (1):insert into /*+ append */ NOLOGGING 2: select 查询 (1):/*+ full(v) */ 全表查询 ...
- oracle优化原则(二)
SQL优化原则 二.SQL语句编写注意问题 www.2cto.com 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍.在这些where子句中,即使某些列存在索引,但是由于编写了劣质 ...
- Android: Intent实现活动之间的交互
Intent的作用:是Android中各个组件直接交互的一种重要方式,且利用Intent可以启动Activity.Service以及Broadcast Receiver. Intent的创建:显示和隐 ...
- ASP.NET Web API路由规
默认的规则 在ASP.NET MVC4中 global.asax.cs代码中并无注册默认路由规则的代码 代码如下: public class WebApiApplication : System.We ...
- linux copy
cp -ri 131115-6/* /web/www/attachment/ 把13这个文件夹下面所有的文件和文件夹复制到 /web/www/attachment cp -a a /web/ww ...
- Installing a single-server IBM FileNet P8 Platform system with IBM Content Navigator
Product documentation Abstract You can install all of the IBM FileNet P8 Platform components on a si ...
- Understanding Virtual Memory
Understanding Virtual Memory by Norm Murray and Neil Horman Introduction Definitions The Life of a P ...