2011-09-30 104 views
1

我正在写一个自定义上传的通知,非常相似,从Picasa照片上传 http://code.google.com/p/picasaphotouploader/source/browse/trunk/src/com/android/picasaphotouploader/UploadNotification.java通知标记具有值-3

在创作,我设置了FLAG_ONGOING_EVENT和它的作品。上传完成后,我有以下两行:

flags =~ Notification.FLAG_ONGOING_EVENT; flags += Notification.FLAG_AUTO_CANCEL;

但是,我通知不可取消,和flags具有-3的值。 你知道为什么我不能再改变旗帜吗?

+0

您是否在更改标志后通过notify()更新了'Notification'? – CommonsWare

+0

是的,我做了'manager.notify(id,this);'无论如何,我最终手动设置为FLAG_AUTO_CANCEL的标志值为16,但我仍然想知道究竟发生了什么... – dulys

回答

4

迟到的答案,但以防万一有人遇到这个问题。我相信你应该在这里使用按位运算而不是算术运算。

在这种情况下使用:

flags = (~Notificatoin.FLAG_ONGOING_EVENT | Notification.FLAG_AUTO_CANCEL); 

这可能看起来有点古怪,因为,如果你不知道位操作,你的直觉告诉你“不是正在进行或自动取消”,但它的真正含义禁用正在进行位并启用自动取消位。

我建议阅读位操作符和位掩码。

+0

+1保证关于本能的评论。 – ataulm