这里是目录qwq 试着用了一下markdown
- 1. 简单创建
- ①对通知进行管理
- ②使用一个Builder构造器来创建Notification 对象
- ③使用notify()方法显示
- ④实战用法
- 2、通知详细信息 PendingIntent
- ①通知的具体内容展示
- ②自动注销
使用通知:(本文内容来自《第一行代码》整理)
1. 简单创建
①对通知进行管理
可以用 Context的getSystemService() 传入Context.NOTIFICATION_SERVICE表明这个无所不能的大管家今天来管理的是"通知" 啊哈哈NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
②使用一个Builder构造器来创建Notification 对象
support-v4库中提供了一个NotificationCompat 类,使用这个类的构造器兼容性会最好一些 因为嘛这个总是升级Notification notification = new NotificationCompat.Builder(context).build();
此时可以设置很多连缀 只要context下面不加. 换行 直接可以继续用
setContentText()/ setContentTitle() (这俩都是直接传入文本)
setWhen() 方法用于指定通知被创建的时间,以毫秒为单位,当下拉系统状态栏时,这里指定的时间会显示在相应的通知上。setSmallIcon() 方法用于设置通知的小图标,注意只能使用纯alpha图层的图片进行设置,小图标会显示在系统状态栏上。setLargeIcon() 方法用于设置通知的大图标,当下拉系统状态栏时,就可以看到设置的大图标了。
③使用notify()方法显示
manager.notify(1, notification);
第一个是id 每个通知不同/ 第二个是刚刚建好的那个对象~
④实战用法
switch (v.getId()) {
case R.id.send_notice:
NotificationManager manager = (NotificationManager) getSystemService
(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("This is content title")
.setContentText("This is content text")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),
R.mipmap.ic_launcher))
.build();
manager.notify(1, notification);
break;
default:
break;
}
还可以吧 不过大小图标最好换一下
2、通知详细信息 PendingIntent
①通知的具体内容展示
它主要提供了几个静态方法用于获取PendingIntent的实例,可以根据需求来选择是使用getActivity() 方法、getBroadcast() 方法,还是getService()方法
现在第一个是context 第二个一般是0 第三个是intent 第四个一般是0。
NotificationCompat.Builder这个构造器还可以再连缀一个setContentIntent() 方法,接收的参数正是一个PendingIntent 对象。因此,这里就可以通过PendingIntent构建出一个延迟执行的“意图”,当用户点击这条通知时就会执行相应的逻辑。
对于另一个活动~~ 我们新增代码如下
Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
中间加一个.setContentIntent(pi)
有了这个延迟的"意图" 之后就可以响应,点击事件了!!
②自动注销
可以直接连缀的时候.setAutoCancel(true)
也可以在外面的manager那里 cancel(1) 1是之前我们自己设置的那个id
##3.振动与声音
声音:直接连缀.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg"))) .build();
振动:使用vibrate 这个属性。它是一个长整型的数组,用于设置手机静止和振动的时长,以毫秒为单位。下标为0的值表示手机静止的时长,下标为1的值表示手机振动的时长,下标为2的值又表示手机静止的时长,以此类推。
.setVibrate(new long[] {0, 1000, 1000, 1000 })就是 在通知到来的时候立刻振动1秒,然后静止1秒,再振动1秒
振动需要权限:<uses-permission android:name="android.permission.VIBRATE" />
灯亮起和暗去 .setLights(Color.GREEN, 1000, 1000)
.setDefaults(NotificationCompat.DEFAULT_ALL)这样是直接!!默认跟了全局设置
.setPriority(NotificationCompat.PRIORITY_MAX)是跳出…… 啊好了可以不管了)
总之还挺简单的 : 管理员+ 实体+ 构造方法一大堆 加最后notify~完成!