第一次写博客,来记录一些工作中遇到的技术问题---关于android的Notification学习的记录

目前了解到生成Notification的方法有两种,第一种是直接new新的Notification对象,然后为其设置相应的参数

如下所示

//新建的notification对象

Notification customNotification = new Notification();

//为其设置小图标

customNotification.icon = R.drawable.notification;

//为其设置在屏幕最上方的提醒文字

customNotification.tickerText = "测试提醒";

//为其设置记录提醒的时间

customNotification.when = System.currentTimeMillis();

//为其设置跳转到的Activity               
Intent intent = new Intent(MainActivity.this, TestActivity.class); 

//得到PendingIntent对象(不知道这个对象具体是干什么用的,有高手看到这个的话麻烦解答一下)
PendingIntent pIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);

//设置推送的标题和内容
customNotification.setLatestEventInfo(MainActivity.this, " Title", "Content", pIntent);


第二种是通过系统的Builder对象来创建

如下所示


//在创建notification之前要先创造一个Builder对象,该对象所在的包是(android.support.v4.app.NotificationCompat)

//然后调用Notification类的静态方法Builder来创建一个Builder对象
//有了这个builder,就可以为当前的Notification对象指定属性
//Notification对象不是被new出来的,而是通过Builder对象给创造出来的
//先通过Builder对象为准备创建的Nofication对象设置相应的属性
//当属性设置好以后,再用Builder对象的build()方法来创建Notification对象
//但是当Notification对象被创建好以后,还不能直接显示到界面当中,必须要通过一个NotificationManager对象来对其进行控制
//而NotificationManager对象也不是被new出来的,而是获取的系统的NotificationServer对象,然后强制转换成NotificationManager对象来得到


Builder builder = new NotificationCompat.Builder(MainActivity.this);
builder.setSmallIcon(R.drawable.notification);  //为当前的Notification设置小图标
builder.setContentTitle("我是主要标题");   //为当前的Notification设置主要标题
builder.setContentText("我是消息的主体");   //为当前的Notification设置主体
builder.setProgress(100, 70, false);          //该方法可以设置一个进度条(第三个参数是表明是否开启跑马灯效果)
Notification notification = builder.build();  //创建一个真实的Notification对象,当Notification对象被创建好以后,还不能显示到界面当中




不管用那种方式得到Notification对象最终都要通过NotificationManager对象来进行统一管理,并进行触发显示

如下所示

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

manager.notify(1, customNotification);


//除此之外,还可以通过以下方式来设置一些特殊的功能

customNotification.defaults |= Notification.DEFAULT_LIGHTS;  // 通知灯光
customNotification.defaults |= Notification.DEFAULT_VIBRATE; // 震动 (此功能需要开启<uses-permission android:name="android.permission.VIBRATE"/>权限)
customNotification.flags |= Notification.FLAG_NO_CLEAR;   // 通知不可以清除
customNotification.flags = Notification.FLAG_AUTO_CANCEL;  // 通知可以清除
customNotification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // 系统默认铃声
customNotification.flags |= Notification.FLAG_INSISTENT; // 声音一直响到用户相应,就是通知会一直响起,直到你触碰通知栏的时间就会停止



//在通知窗口区域,Notification被单击时的响应事件由该intent触发;
customNotification.contentIntent = pIntent;
//在通知窗口区域,当用户点击全部清除按钮时,响应该清除事件的Intent
//customNotification.deleteIntent = pIntent;
//响应紧急状态的全屏事件(例如来电事件),也就是说通知来的时候,跳过在通知区域点击通知这一步,直接执行fullScreenIntent代表的事件
customNotification.fullScreenIntent = pIntent;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值