在BroadcastReceiver中创建通知:Android

时间:2012-04-01 18:42:34

标签: android notifications

在我的应用程序中,我使用过C2DM。在这里,当我收到C2DM消息/通知时,我正在尝试使用通知管理器创建通知。我可以正确创建通知,但是当有许多未读通知时,我无法增加未读通知的数量(使用Notification.number)。因为我在onReceive()函数中创建了通知对象,所以一旦控件来自onReceive函数就会被破坏。所以,陈述

public class MyC2dmReceiver extends BroadcastReceiver{

private Context context;

@Override
public void onReceive(Context context1, Intent intent) {
this.context = context1;

    if(intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")) {    
        handleRegistration(context, intent);
} 
    else if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) {
        handleMessage(context, intent);
}
}

private void handleMessage(Context context, Intent intent)
{
   .....
   .....   
   Notification notification =     
      new Notification(R.drawable.ic_launcher,intent.getStringExtra("payload"),       
               System.currentTimeMillis());     

   notification.flags |= Notification.FLAG_AUTO_CANCEL;
   notification.defaults = Notification.DEFAULT_ALL;
   notification.number += 1;  
}
}

没有用,因为它每次都在创建一个新的通知对象。我也不能使它(通知对象)成为一个静态对象。如果我将它设为静态对象,即使在查看了所有未读通知之后,notification.number也不会被重置。这基本上就是问题所在。有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

将未读消息的数量存储在数据库,平面文件,共享首选项或其他持久性存储中。在创建新Notification时,请输入该号码。