首页 > 其他 > 详细

关于修改bug后当时有效而OTA升级后显示bug并未解决的问题

时间:2015-12-17 02:09:36      阅读:392      评论:0      收藏:0      [点我收藏+]

之前在解一个闹钟在静音模式下不响铃的bug的时候,删掉了一行代码

ringerModeAffectedStreams |= (1 << AudioSystem.STREAM_RING)|
                                        (1 << AudioSystem.STREAM_NOTIFICATION)|
                                        (1 << AudioSystem.STREAM_ALARM)|
                                        (1 << AudioSystem.STREAM_SYSTEM);

?删掉了其中的

(1 << AudioSystem.STREAM_ALARM)|

?这一行代码。之后验证,问题是解决了的。可是在未解决版本上通过OTA升级的方法把这个问题的解决体现出来的时候是没有效果的。

苦苦寻找解决办法数天之后,发现

ringerModeAffectedStreams

这个值的存取是通过读写数据库完成的。即

ringerModeAffectedStreams = Settings.System.getIntForUser(mContentResolver,
                Settings.System.MODE_RINGER_STREAMS_AFFECTED,
                ((1 << AudioSystem.STREAM_RING)|(1 << AudioSystem.STREAM_NOTIFICATION)|
                 (1 << AudioSystem.STREAM_SYSTEM)|(1 << AudioSystem.STREAM_SYSTEM_ENFORCED)),
                 UserHandle.USER_CURRENT);

?和

Settings.System.putIntForUser(mContentResolver,
                    Settings.System.MODE_RINGER_STREAMS_AFFECTED,
                    ringerModeAffectedStreams,
                    UserHandle.USER_CURRENT);

?从而得到启发,

(1 << AudioSystem.STREAM_ALARM)

这一项在之前的版本是通过“或”的方式加进数据库的,而之后删掉这一行,并不能在数据库中把这一项的值去掉,即变成0。

故最终还需要在代码中加入这句

ringerModeAffectedStreams &= ~(1 << AudioSystem.STREAM_ALARM);

?通过这种“移位”“与”的方式把相应的为置零。

关于修改bug后当时有效而OTA升级后显示bug并未解决的问题

原文:http://phoobobo.iteye.com/blog/2264626

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!