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);
    }
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014246372/article/details/70742001
个人分类: android基础知识
想对作者说点什么? 我来说一句

Notification的使用示例各种效果

2018年02月28日 20.22MB 下载

Notification简单示例

2009年03月03日 36KB 下载

Android Notification Demo

2016年04月24日 48.44MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭