Android - 更新状态栏通知

时间:2015-05-08 11:30:16

标签: android android-intent android-activity notifications

我创建了一个Android应用程序,它通过使用Alarm服务在两分钟内轮询服务器一次。警报触发服务意图后,将轮询服务器以获取任何新数据。如果有新数据,将使用NotificationManager类生成状态栏通知。

我在这里几乎没有疑问:

  1. 首先会生成一条通知,指示从服务器到达的新数据更新。两分钟后,再次提供新数据。如何知道用户是否点击了旧通知?通过知道我将决定是否将“新消息到达”或“2个新消息到达”

  2. 如何从服务意图本身更新现有通知?

  3. 如何获取附加内容并将其附加到活动的列表视图中?现在,每次单击通知时,都会在活动中创建新的列表视图,并且仅附加该消息。

  4. PollingServer.class:

                NotificationManagerCompat.from(this).cancelAll();
    
                Intent notificationIntent= new Intent(this, Messages.class);
                notificationIntent.putExtra("msg",toastText);
    
                TaskStackBuilder stackBuilder=TaskStackBuilder.create(this);
                stackBuilder.addParentStack(Messages.class);
                stackBuilder.addNextIntent(notificationIntent);
    
                PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
                NotificationCompat.Builder mBuilder =
                        new NotificationCompat.Builder(context)
                                .setSmallIcon(R.drawable.clove)
                                .setContentTitle("My notification")
                                .setContentText(toastText)
                                .setContentIntent(contentIntent)
                                .setDefaults(Notification.DEFAULT_SOUND)
                                .setAutoCancel(true);
    
                NotificationManager mNotificationManager =
                        (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
                mNotificationManager.notify(1, mBuilder.build());
    

    Messages.class:

                private ListView mainListView;
    
                @Override
                protected void onCreate(Bundle savedInstanceState) {
    
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_messages);
                Bundle extras = getIntent().getExtras();
                final String msg = extras.getString("msg");
    
                // Find the listView Resource
                mainListView = (ListView) findViewById(R.id.listview);
                ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1);
                mainListView.setAdapter(arrayAdapter);
                arrayAdapter.add(msg);
    
             }
    

0 个答案:

没有答案