Notification示例

原创 2017年04月25日 16:18:18

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);
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

Notification简单实例

Notification简单用法
  • guchuanhang
  • guchuanhang
  • 2016年06月09日 10:31
  • 1232

Android通知Notification入门小例子(一)

通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望向 用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一 条通知后,手机最...
  • u011159417
  • u011159417
  • 2015年12月21日 13:12
  • 537

android notification 示例

package com.mysession; import java.io.File; import android.app.Activity; import android.app.N...
  • fhy_2008
  • fhy_2008
  • 2012年06月11日 14:09
  • 629

Notification示例(Project)

1、 package leadingmis.mobile.main; import android.app.Activity; import android.app.Notification; ...
  • tianyitianyi1
  • tianyitianyi1
  • 2012年05月14日 21:51
  • 510

实现自定义布局的Notification

上一节中,我们实现了自己的notification,相信大家都有了一些认识,在最后也接受了利用RemoteView来实现自定义布局的notification,这里就来举一个示例,方便理解。     ...
  • chenlong12580
  • chenlong12580
  • 2011年12月24日 11:00
  • 18286

Android Notification 的四种使用方式

实现通知步骤 一搬实现通知需要如下步骤: 1.获取 NotificationManager 实例管理通知; 2.实例 Notification 对象; 3.管理事件 Intent; 4.发送...
  • yxncl
  • yxncl
  • 2017年05月29日 11:13
  • 2135

android Notification动态更新

import android.app.Activity; import android.app.Notification; import android.app.NotificationManager...
  • chuyouyinghe
  • chuyouyinghe
  • 2016年03月08日 15:33
  • 3699

自定义Notification及几个坑介绍

**背景** 最近做了下推送,涉及到Notification,看到一篇不错的文章感觉好多坑都介绍到了,于是先转载并补充一下,下一篇再介绍推送。相关链接: 原文链接 原文Demo下载**实现**...
  • u011747781
  • u011747781
  • 2016年08月15日 17:49
  • 1820

HTML5新特性之WebNotifications

由于平时忙于工作,已经有很长时间没有更新博客了,偶尔会进来看一眼,发现有很多朋友在下面留言,我很庆幸当时能写下这些有价值的文章,直到现在还能够帮助这么多朋友解决Android方面的一些问题。 最近研究...
  • liuhe688
  • liuhe688
  • 2015年03月15日 22:38
  • 12699

Android Notification 的声音和震动

又到了一周的周六了,so… 我们在Android系统发送一条通知的时候,经常需要通过震动或声音来提醒用户。如何为通知设置声音和震动了。大致思路有: - Android通知系统默认的声音和震...
  • zhao0829wang
  • zhao0829wang
  • 2015年04月25日 12:19
  • 12291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Notification示例
举报原因:
原因补充:

(最多只允许输入30个字)