Notification示例

Notification

  NotificationManager类是一个通知管理器类,这个对象是由系统维护的服务,是以单例模式获得,所以一般并不直接实例化这个对象。在Activity中,可以使用Activity.getSystemService(String)方法获取NotificationManager对象,Activity.getSystemService(String)方法可以通过Android系统级服务的句柄,返回对应的对象。在这里需要返回NotificationManager,所以直接传递Context.NOTIFICATION_SERVICE即可。
 
总结了下面几个通知:

这里写图片描述

上代码:

最基本的通知

    /**
     * 最基本的通知
     *
     */
    private void sendNotification() {

        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                //设置小图标
                .setSmallIcon(R.mipmap.rivers)
                //设置通知标题
                .setContentTitle("最简单的Notification")
                .setContentText("只有小图标、标题、内容");

        //设置通知时间,默认为系统发出通知的时间,通常不用设置
        //.setWhen(System.currentTimeMillis());
        //通过builder.build()方法生成Notification对象,并发送通知,id=1
        notifyManager.notify(1, builder.build());
    }

bigtext风格的通知

bigtext 说白了就是长文字的提醒。但是在4.0 和5.0上显示的效果不同呢。刚开始都是显示的title,4.0的系统呢得手动滑动才能出来,5.0的系统初次会有一个是否接受通知的提醒,点击了允许之后才会显示出bittext

     /**bigtext风格的通知
     *
     */
    private void sendNotification() {

        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                //设置小图标
                .setSmallIcon(R.mipmap.rivers)
                //设置通知标题
                .setContentTitle("最简单的Notification")
                .setStyle(new NotificationCompat.BigTextStyle()
                        .bigText("bigview 的显示,北海市位于广西北部湾畔,是国家历史文化名城。这里面向东南亚,背靠大西南,是西南出海大通道的重要出海口。"))
                //设置通知内容
                .setContentText("只有小图标、标题、内容");

        //设置通知时间,默认为系统发出通知的时间,通常不用设置
        //.setWhen(System.currentTimeMillis());
        //通过builder.build()方法生成Notification对象,并发送通知,id=1
        notifyManager.notify(1, builder.build());
    }

带图片的的通知

  /**
     * 
     */
    private void sendNotificationWithPictureStyle() {

        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                //设置小图标
                .setSmallIcon(R.mipmap.rivers)
                //设置通知标题
                .setContentTitle("带图片的Notification")
                .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.pic1)))
                // .setStyle(new NotificationCompat.BigTextStyle(.bigText("bigview 的显示,北海市位于广西北部湾畔,是国家历史文化名城。这里面向东南亚,背靠大西南,是西南出海大通道的重要出海口。"))
                //设置通知内容
                .setContentText("有小图标、标题、内容");

        //设置通知时间,默认为系统发出通知的时间,通常不用设置
        //.setWhen(System.currentTimeMillis());
        //通过builder.build()方法生成Notification对象,并发送通知,id=1
        notifyManager.notify(2, builder.build());
    }

inbox的的通知

    /**
     * 
     */
    private void sendNotificationWithInbox() {

        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                //设置小图标
                .setSmallIcon(R.mipmap.rivers)
                //设置通知标题
                .setContentTitle("inboxStyle Notification")
                .setStyle(
                    new NotificationCompat.InboxStyle()
                        .addLine("第一行,第一行,第一行,第一行,第一行,第一行,第一行")
                        .addLine("第二行")
                        .addLine("第三行")
                        .addLine("第四行")
                        .addLine("第五行")
                        .setSummaryText("SummaryText"))
                //设置通知内容
                .setContentText("有小图标、标题、内容");

        //设置通知时间,默认为系统发出通知的时间,通常不用设置
        //.setWhen(System.currentTimeMillis());
        //通过builder.build()方法生成Notification对象,并发送通知,id=1
        notifyManager.notify(3, builder.build());

发送一个点击跳转到indexActivity的消息

 /**
     * 发送一个点击跳转到indexActivity的消息
     */
    private void sendSimplestNotificationWithAction() {
        //获取PendingIntent
        Intent mainIntent = new Intent(this, indexPopActivity_.class);
        PendingIntent mainPendingIntent = PendingIntent.getActivity(this, 0, mainIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        //创建 Notification.Builder 对象
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.fish)
                //点击通知后自动清除
                .setAutoCancel(true)
                .setContentTitle("我是带Action的Notification")
                .setContentText("点我会打开indexActivity")
                .setContentIntent(mainPendingIntent)

                // 点击之后通知消失
                .setAutoCancel(true);
        //发送通知
        notifyManager.notify(4, builder.build());
    }

自定义view的通知

 private void sendNotificationWithCustomView(){
        //miniSdk>24

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification);
        contentView.setTextViewText(R.id.textView2, "show me  我是自定义的view");
        contentView.setTextViewText(R.id.button, "按钮");
        contentView.setTextViewText(R.id.btn2, "按钮2");
        Notification.Builder builder = new Notification.Builder(this)
                .setContent(contentView)
                .setSmallIcon(R.mipmap.fish);
        //发送通知
        notifyManager.notify(5, builder.build());



    }

横幅通知 悬浮的样子

此种效果只在5.0以上系统中有效
mainfest中需要添加、

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    /**
     * 横幅通知 悬浮的样子
     */
    private void sendNotificationWithFull(){
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentTitle("横幅通知");
        builder.setContentText("请在设置通知管理中开启消息横幅提醒权限");
        builder.setDefaults(NotificationCompat.DEFAULT_ALL);
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.fish));
        Intent intent = new Intent(this,indexPopActivity_.class);
        PendingIntent pIntent = PendingIntent.getActivity(this,1,intent,0);
        builder.setContentIntent(pIntent);
        //这句是重点
        builder.setFullScreenIntent(pIntent,true);
        builder.setAutoCancel(true);
        Notification notification = builder.build();
        notifyManager.notify(6,notification);
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值