zoukankan      html  css  js  c++  java
  • android 通知


    http://topic.csdn.net/u/20110503/12/7bccb06b-aeab-4e26-b1d5-2b1fe90bd7a2.html?seed=1336997130&r=77425386#r_77425386

    public class Main extends Activity {
        private Button btnTest;
        private TextView tvInfo;
        private int Count; // 未处理的通知个数
        private int Id; // 通知Id

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            InitialControl();
        }

        private void InitialControl() {
            btnTest = (Button) findViewById(R.id.btnTest);
            tvInfo = (TextView) findViewById(R.id.tvInfo);
            //
            btnTest.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    btnTest_Click();
                }
            });
        }

        /**
         * 发出通知
         
    */
        protected void btnTest_Click() {
            Count++;
            Id++;
            String title = String.format("通知: %d", Id);
            String body = String.format("内容: Id=%d, Count=%d", Id, Count);
            Intent intent = new Intent(this, ShowNotify.class);
            intent.putExtra("Count", Count);
            intent.putExtra("Id", Id);
            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
                    intent, 0);
            Notification notification = new Notification();
            notification.icon=R.drawable.icon;
            notification.tickerText = title;
            notification.defaults=Notification.DEFAULT_LIGHTS;
            notification.setLatestEventInfo(this, title, body, pendingIntent);
            notification.number = Count;
            NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            notificationManager.notify(2, notification);
            tvInfo.setText(body);
        }
    }
    public class ShowNotify extends Activity { private Button btnClose; private TextView tvInfo; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.shownotify); InitialControl(); ShowNotifyContent(); } private void InitialControl() { btnClose = (Button) findViewById(R.id.btnClose); tvInfo = (TextView) findViewById(R.id.tvInfo); // btnClose.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { btnClose_Click(); } }); } /** * 显示通知内容 */ private void ShowNotifyContent() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.cancel(2); Intent intent = getIntent(); int Id = intent.getIntExtra("Id", 0); int Count = intent.getIntExtra("Count", 0); String content = String.format("收到通知: Id=%d, Count=%d", Id, Count); tvInfo.setText(content); } /** * 关闭 */ protected void btnClose_Click() { finish(); } }
    点击btnTest就可以狂发通知了。但点击通知,进入ShowNotify活动,却总是得到第1个通知的内容。
    我的疑问是:
    1. 点击最新的通知,ShowNotify怎样才能得到最新的通知内容?
    2. 如何当通知被显示后,让Main活动的Count重置为0?

    想不到还有人来挖这个贴子, 我就大概说一下吧, 方便后来人

    如果用相同的通知id, 该怎么告诉处理通知的活动,每个通知的内容呢?
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
    intent, PendingIntent.FLAG_UPDATE_CURRENT);
    最后一个参数可以保证显示的是最新的那个通知
    如果用不同的通知id, 为什么处理通知的活动得到的Intent总是第一个通知的Intent呢?
    多个Intent是根据它们的Data属性来区分的,如果Data相同,将认为是同一个Intent
     

    我刚好也正在找这个问题的解决方法。看到这个帖子。也查了其他,居然没有答案。
    查了谷歌的文档。有一个地方被遗漏了。就是
    PendingIntent.getActivity(参数若干)这个方法。在其参数的第二个request code。就是用于区别intent的
    标识,至少试下来没问题。谷歌文档中写这个request code 是“不使用”。我一开始以为没用。
    今天尝试下来发现可以区别各个通知中得intent内容。不然我原来做的程序也和楼主一样,即便通知id不同,
    第二第三个通知也会覆盖第一个通知的intent的现象。可能因为context是一样的(程序本身activity)的缘故。
     

  • 相关阅读:
    遍历文件夹及子文件夹_函数
    wbadmin与vssadmin
    WSB备份到远程共享文件夹的限制
    Linux 性能工具集
    shell 与 空格
    Git 仓库结构 (二)***
    Linux下scp的用法***
    FINDSTR 命令使用详解
    Git 的origin和master分析 ***
    Git push *****
  • 原文地址:https://www.cnblogs.com/leaven/p/2577991.html
Copyright © 2011-2022 走看看