Android Studio 1-3 Notitfcation 通知 与 双击退出

一、Notitfcation 通知

1、交互式的通知

 //通知管理
                NotificationManager manager1 = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                Notification.Builder builder1 = new Notification.Builder(this);
                builder1.setSmallIcon(R.mipmap.ic_launcher);
                builder1.setContentTitle("这是标题");
                builder1.setContentText("这是内容部分");

                builder1.setPriority(Notification.PRIORITY_MAX);
                builder1.setDefaults(Notification.DEFAULT_ALL);

                //完成之后 自动取消通知
                builder1.setAutoCancel(true);
                //跳转意图
                Intent intent = new Intent(this, MainActivity.class);
                //跳转指向和方式
                PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                //设置跳转
                builder1.setContentIntent(pendingIntent);

                Notification build1 = builder1.build();
                manager1.notify(1, build1);

2、发送大图或列表通知

 //通知管理
                NotificationManager manager2 = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                Notification.Builder builder2 = new Notification.Builder(this);
                builder2.setSmallIcon(R.mipmap.ic_launcher);
                builder2.setContentTitle("这是标题");
//                builder2.setContentText("这是内容部分");

                builder2.setPriority(Notification.PRIORITY_MAX);
                builder2.setDefaults(Notification.DEFAULT_ALL);

                //大图
                Notification.BigPictureStyle bigPictureStyle = new Notification.BigPictureStyle();
                bigPictureStyle.bigLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round));
                builder2.setStyle(bigPictureStyle);

                //列表
//                Notification.InboxStyle inboxStyle = new Notification.InboxStyle();
//                inboxStyle.addLine("诸葛亮");
//                inboxStyle.addLine("李白");
//                inboxStyle.addLine("伽罗");
//                inboxStyle.addLine("韩信");
//                inboxStyle.addLine("百里守约");
                //设置样式
//                builder2.setStyle(inboxStyle);


                //完成之后 自动取消通知
                builder2.setAutoCancel(true);
                //跳转意图
                Intent intent1 = new Intent(this, MainActivity.class);
                //跳转指向和方式
                PendingIntent pendingIntent1 = PendingIntent.getActivity(this, 0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
                //设置跳转
                builder2.setContentIntent(pendingIntent1);

                Notification build2 = builder2.build();
                manager2.notify(1, build2);

3、发送自定义通知

//通知管理
                NotificationManager manager3 = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                final Notification.Builder builder3 = new Notification.Builder(this);
                builder3.setSmallIcon(R.mipmap.ic_launcher);
                builder3.setContentTitle("这是标题");
//                builder2.setContentText("这是内容部分");

                builder3.setPriority(Notification.PRIORITY_MAX);
                builder3.setDefaults(Notification.DEFAULT_ALL);

                //远程视图
                RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.layout_custom);
                //类似find id 的方法
                remoteViews.setImageViewResource(R.id.iv_title, R.mipmap.ic_launcher);
                remoteViews.setTextViewText(R.id.tv_titile, "练习-刘德华");
                //绑定完成
                builder3.setCustomContentView(remoteViews);

                //完成之后 自动取消通知
                builder3.setAutoCancel(true);
                //跳转意图
                Intent intent2 = new Intent(this, MainActivity.class);
                //跳转指向和方式
                PendingIntent pendingIntent2 = PendingIntent.getActivity(this, 0, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
                //设置跳转
                builder3.setContentIntent(pendingIntent2);

                Notification build3 = builder3.build();
                manager3.notify(1, build3);

4、通知分组

  NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                Notification.Builder mBuilder0 = new Notification.Builder(this);
                Notification.Builder mBuilder1 = new Notification.Builder(this);
                Notification.Builder mBuilder2 = new Notification.Builder(this);
                Notification.Builder mBuilder3 = new Notification.Builder(this);

                //相同组消息分到一起
                mBuilder0.setGroup("2");
                mBuilder0.setSmallIcon(R.mipmap.ic_launcher);
                //被设置为true的消息会被隐藏
                mBuilder0.setGroupSummary(true);
                mBuilder0.setContentTitle("111");
                mBuilder0.setContentText("222");

                //相同组消息分到一起
                mBuilder1.setGroup("2");
                mBuilder1.setSmallIcon(R.mipmap.ic_launcher);
                //被设置为true的消息会被隐藏
//                mBuilder1.setGroupSummary(true);
                mBuilder1.setContentTitle("33333");
                mBuilder1.setContentText("44444");

                //相同组消息分到一起
                mBuilder2.setGroup("2");
                mBuilder2.setSmallIcon(R.mipmap.ic_launcher);
                //被设置为true的消息会被隐藏
//                mBuilder2.setGroupSummary(true);
                mBuilder2.setContentTitle("5555555");
                mBuilder2.setContentText("6666666");

                //相同组消息分到一起
                mBuilder3.setGroup("2");
                mBuilder3.setSmallIcon(R.mipmap.ic_launcher);
                //被设置为true的消息会被隐藏
//                mBuilder3.setGroupSummary(true);
                mBuilder3.setContentTitle("7777777");
                mBuilder3.setContentText("88888888");

//                mBuilder0.setAutoCancel(true);
//                mBuilder1.setAutoCancel(true);
//                mBuilder2.setAutoCancel(true);
//                mBuilder3.setAutoCancel(true);

                notificationManager.notify(0, mBuilder0.build());
                notificationManager.notify(1, mBuilder1.build());
                notificationManager.notify(2, mBuilder2.build());
                notificationManager.notify(3, mBuilder3.build());

5、发送进度条通知

 final NotificationManager manager4 = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                final Notification.Builder builder4 = new Notification.Builder(this);
                builder4.setContentTitle("下载");
                builder4.setContentText("下载中……");
                builder4.setSmallIcon(R.mipmap.ic_launcher);//设置小图标
                //设置进度条
                //参数一 最大值 参数二:当前进度 参数三 是否模糊
                //    builder.setProgress(100,50,true);
                final Timer timer=new Timer();
                timer.schedule(new TimerTask() {
                    int progress;
                    @Override
                    public void run() {
                        //1.模拟下载过程
                        builder4.setContentText("正在下载,当前进度"+progress);
                        builder4.setProgress(100,progress,false);//确定的进度条
                        progress+=10;
                        manager4.notify(6,builder4.build());
                        if(progress==100){
                            //2.安装过程
                            builder4.setContentText("正在安装");
                            builder4.setProgress(0,0,true);//安装模糊
                            manager4.notify(6,builder4.build());
                            try {
                                Thread.sleep(7000);//模拟安装过程
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            //3.安装完成
                            manager4.cancel(6);//取消置顶的通知
                            timer.cancel();
                        }
                    }
                }, 0, 1000);

                Notification build4 = builder4.build();
                manager4.notify(8,build4);

二、双击退出当前APP

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK){
            if (System.currentTimeMillis() - time > 2000 ){
                Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
                time = System.currentTimeMillis();

                return true;
            }else {
                finish();
            }
        }
        return super.onKeyDown(keyCode, event);
    }
发布了20 篇原创文章 · 获赞 4 · 访问量 908

猜你喜欢

转载自blog.csdn.net/v1141261428/article/details/98495535