Android通知栏(已抛弃setLatestEventInfo)

  • 2017-8-20 10:43
  • PHP二次开发
  • 阅读(174)
  • 评论(0)
  • 来源:互联网
  • 摘要: 显示一个普通的通知栏/** * 显示一个普通的通知 * * @param context 上下文 */ public static void showNotification(Context context) { Notification notification = new NotificationCompat.Builder(cont ...
    显示一个普通的通知栏
     /**
         * 显示一个普通的通知
         *
         * @param context 上下文
         */
        public static void showNotification(Context context) {
            Notification notification = new NotificationCompat.Builder(context)
                    /**设置通知左边的大图标**/
                    .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
                    /**设置通知右边的小图标**/
                    .setSmallIcon(R.mipmap.ic_launcher)
                    /**通知首次出现在通知栏,带上升动画效果的**/
                    .setTicker("通知来了")
                    /**设置通知的标题**/
                    .setContentTitle("这是一个通知的标题")
                    /**设置通知的内容**/
                    .setContentText("这是一个通知的内容这是一个通知的内容")
                    /**通知产生的时间,会在通知信息里显示**/
                    .setWhen(System.currentTimeMillis())
                    /**设置该通知优先级**/
                    .setPriority(Notification.PRIORITY_DEFAULT)
                    /**设置这个标志当用户单击面板就可以让通知将自动取消**/
                    .setAutoCancel(true)
                    /**设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)**/
                    .setOngoing(false)
                    /**向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合:**/
                    .setDefaults(Notification.DEFAULT_VIBRATE | Notification.DEFAULT_SOUND)
                    .setContentIntent(PendingIntent.getActivity(context, 1, new Intent(context, MainActivity.class), PendingIntent.FLAG_CANCEL_CURRENT))
                    .build();
            NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
            /**发起通知**/
            notificationManager.notify(0, notification);
        }

    显示一个下载带进度条的通知
       /**
         * 显示一个下载带进度条的通知
         *
         * @param context 上下文
         */
        public static void showNotificationProgress(Context context) {
            //进度条通知
            final NotificationCompat.Builder builderProgress = new NotificationCompat.Builder(context);
            builderProgress.setContentTitle("下载中");
            builderProgress.setSmallIcon(R.mipmap.ic_launcher);
            builderProgress.setTicker("进度条通知");
            builderProgress.setProgress(100, 0, false);
            final Notification notification = builderProgress.build();
            final NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
            //发送一个通知
            notificationManager.notify(2, notification);
            /**创建一个计时器,模拟下载进度**/
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                int progress = 0;

                @Override
                public void run() {
                    Log.i("progress", progress + "");
                    while (progress <= 100) {
                        progress++;
                        try {
                            Thread.sleep(100);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        //更新进度条
                        builderProgress.setProgress(100, progress, false);
                        //再次通知
                        notificationManager.notify(2, builderProgress.build());
                    }
                    //计时器退出
                    this.cancel();
                    //进度条退出
                    notificationManager.cancel(2);
                    return;//结束方法
                }
            }, 0);
        }

    显示一个悬挂式的通知
       /**
         * 悬挂式,部分系统厂商不支持
         *
         * @param context
         */
        public static void showFullScreen(Context context) {
            NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
            Intent mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://blog.csdn.net/linglongxin24"));
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, mIntent, 0);
            builder.setContentIntent(pendingIntent);
            builder.setSmallIcon(R.mipmap.ic_launcher);
            builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
            builder.setAutoCancel(true);
            builder.setContentTitle("悬挂式通知");
            //设置点击跳转
            Intent hangIntent = new Intent();
            hangIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            hangIntent.setClass(context, MainActivity.class);
            //如果描述的PendingIntent已经存在,则在产生新的Intent之前会先取消掉当前的
            PendingIntent hangPendingIntent = PendingIntent.getActivity(context, 0, hangIntent, PendingIntent.FLAG_CANCEL_CURRENT);
            builder.setFullScreenIntent(hangPendingIntent, true);
            NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
            notificationManager.notify(3, builder.build());
        }

    显示一个折叠式的通知
        /**
         * 折叠式
         *
         * @param context
         */
        public static void shwoNotify(Context context) {
            //先设定RemoteViews
            RemoteViews view_custom = new RemoteViews(context.getPackageName(), R.layout.view_custom);
            //设置对应IMAGEVIEW的ID的资源图片
            view_custom.setImageViewResource(R.id.custom_icon, R.mipmap.icon);
            view_custom.setTextViewText(R.id.tv_custom_title, "今日头条");
            view_custom.setTextColor(R.id.tv_custom_title, Color.BLACK);
            view_custom.setTextViewText(R.id.tv_custom_content, "金州勇士官方宣布球队已经解雇了主帅马克-杰克逊,随后宣布了最后的结果。");
            view_custom.setTextColor(R.id.tv_custom_content, Color.BLACK);
            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
            mBuilder.setContent(view_custom)
                    .setContentIntent(PendingIntent.getActivity(context, 4, new Intent(context, MainActivity.class), PendingIntent.FLAG_CANCEL_CURRENT))
                    .setWhen(System.currentTimeMillis())// 通知产生的时间,会在通知信息里显示
                    .setTicker("有新资讯")
                    .setPriority(Notification.PRIORITY_HIGH)// 设置该通知优先级
                    .setOngoing(false)//不是正在进行的   true为正在进行  效果和.flag一样
                    .setSmallIcon(R.mipmap.icon);
            Notification notify = mBuilder.build();
            NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
            notificationManager.notify(4, notify);
        }


    PHP技术交流QQ群:422137578

    除非注明,文章均为 PHP二次开发 原创,转载请注明本文地址:http://www.php2.cc/article-2638-1.html

    相关阅读

    最新评论

    用户名:  *

    邮 箱:  *

    网 址: 注意加上“http://”哦!