1.通知(Notification)是Android中比较有特色的功能
2.既可以在活动中(Activity)中创建通知,也可以在广播接收器中创建,同时在服务中创建通知
创建的步骤基本相同
创建步骤:
1.首先需要一个NotificationManager来管理通知,可以调用Context中的getSystemService()来获取到,这个方法需要接受一个参数来确定获取系统的哪一个服务,这里需要传入的是Context.NOTIFICATION_SERVICE,最后可以写成:
NotificationManager manager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
2.需要一个Builder来构建Notification对象,使用支持库中的NotificationCompat来构建
Notification notification=new NotificationCompat.Builder(this).build();
这是最基本的通知对象,但是是一个空的,没有作用的对象,可以在Builder后面使用一些方法来丰富这个通知
Notification notification=new NotificationCompat.Builder(this)
.setContentText("这是通知的内容")//通知标题
.setContentTitle("这是一个通知")//通知内容
.setSmallIcon(R.mipmap.ic_launcher)
//小图标 在状态栏上 官网解释:Set the small icon to use in the notification layouts.
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))//大图标,在通知栏上 官网解释:Set the large icon that is shown in the ticker and notification.
.setWhen(System.currentTimeMillis()) //被创建的时间 会显示在通知上
.build();
最后需要调用 NotificationManager的notify来显示通知,不然不显示
notify方法有两个参数:第一个是这个通知的id,第二个是通知的实例
在本例中就是这样使用的(id随便)
manager.notify(1,notification);
但是现在的通知是不能点击的,需要使用PendingIntent(某个合适的时机去执行某个动作)
pendingIntent类中有创建的静态方法:主要有getActivity(),getService(),getBroadcast(),参数基本相同,第一个是Context,第二个通常传入0,第三个传入一个需要执行操作的Intent,第四份也通常传入0,具体可查阅文档,然后再Notification的构造方法中使用setCotentIntent设置PendingIntent,再次运行apk发现可以点击,执行相应的Intent操作(比如这个Intent是用来跳转界面的),
但是你会发现,点了通知栏后,投融智并没有消失,所以我们需要在代码中取消这个通知
有以下两种方法,
1,在创建Notification的时候,使用setAutoCancel(true) 来设置自动取消
2.在完成Intent的操作后,在代码中重新获取NotificationManager,然后调用其cancel方法,传入刚才在启动Notification的时候传入的ID,就可以取消这条通知了
在构建Notification时,可以使用setSound(File file)(设置声音) ,setVibrate(long[] data)
(设置震动),setLights(int,int,int)(设置闪光灯),具体操作参考API.偷懒的写法是使用setDefaults(NotificationCompat.DEFAULT_ALL),设置默认的参数
setPriority() 设置通知重要程度 参数有5个,参考API
网友评论