Notification实现消息通知

在网上看到一篇非常棒的博客http://www.cnblogs.com/travellife/p/Android-Notification-xiang-jie.html,看完就知道notification的功能和如何使用。

在原基础上增加了显示字数限制和未读消息条数提醒:

最基础的通知代码:

    private int messageNum=0;

    private void sendNotification(String s) {
        messageNum++;
        System.out.println("进入notification");
	//当字符数大于20
        if (s.length()>20){
            s = s.substring(0,20)+"...";
            System.out.println(s);
        }
        //获取NotificationManager实例
        NotificationManager notifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        //设置小图标和内容
        builder.setSmallIcon(R.mipmap.ic_launcher).setContentTitle("WeChat消息");
        if(messageNum>1){
            builder.setContentText("有"+messageNum+"条未读信息");
        }else{
            builder.setContentText(s);
            //设置通知时间,默认为系统发出通知的时间,通常不用设置
            //.setWhen(System.currentTimeMillis());
            //通过builder.build()方法生成Notification对象,并发送通知,id=1
        }

        notifyManager.notify(1, builder.build());
    }

  • 关于 setSmallIcon() 与 setLargeIcon()。在 NotificationCompat.Builder 中有设置通知的大小图标的两个方法。这两个方法有什么区别呢?当 setSmallIcon() 与 setLargeIcon() 同时存在时, smallIcon 显示在通知的右下角, largeIcon 显示在左侧;当只设置 setSmallIcon() 时, smallIcon 显示在左侧。看下图你就明白了。对于部分 ROM ,可能修改过源码,如 MIUI 上通知的大图标和小图标是没有区别的。
    屏幕快照 2016-10-17 上午10.38.05

实现一个点击 Notification 跳转到 MainActivity 的效果:

添加action后的通知代码:

public void sendNotification() {
        messageNum++;
        System.out.println("进入notification");
        if (s.length()>20){
            s = s.substring(0,20)+"...";
            System.out.println(s);
        }

        NotificationManager notifyManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        //获取PendingIntent
        Intent mainIntent = new Intent(context, MainActivity.class);
        PendingIntent mainPendingIntent = PendingIntent.getActivity(context, 0, mainIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        //创建 Notification.Builder 对象
        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
        if(messageNum>1){
            builder.setContentText("有"+messageNum+"条未读信息");
        }else{
            builder.setContentText(s);
            //设置通知时间,默认为系统发出通知的时间,通常不用设置
            //.setWhen(System.currentTimeMillis());
            //通过builder.build()方法生成Notification对象,并发送通知,id=1
        }
        builder.setSmallIcon(R.mipmap.ic_launcher)
                .setAutoCancel(true)    //点击通知后自动清除
                .setContentTitle("WeChat消息")
                .setContentIntent(mainPendingIntent);
        //发送通知
        notifyManager.notify(3, builder.build());


转载请说明出处: http://www.cnblogs.com/travellife/
GitPages: http://www.littlejie.com/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值