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);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章