Android 5.0 新技术研究-锁屏通知(一)
下面是几个相关部分:
(1)通知Notification API
NotificationManager–获取通知栏
NotificationManager.Builder–通知栏构造器
Notification显示样式设置
Notification的Action调用PendingIntent机制
PendingIntent—-实现
(2)锁屏状态 API
PowerManager–电源管理
PowerManager.WakeLock–唤醒机制
KeyguardManager–锁屏管理
KeyguardManager.disableKeyguard()–解锁屏幕
KeyguardManager.reenableKeyguard()–反解锁屏幕
(3)判断application是否在后台运行,退到后台运行之后点击通知,让他重新运行起来
ActivityManager–AMS(Activity Manager Service)
ActivityManager–AMS(Activity Manager Service)
ActivityManager.RuningAppProcessInfo–所有后台运行的Application
下面开始正式介绍各种实现方式:
(1)实现一个通知的步骤:
- 1.获取状态通知栏管理
NotificationManager notificationManager = (NotificationManager) this
.getSystemService(NOTIFICATION_SERVICE);
- 2.实例化通知栏构造器NotificationCompat.Builder
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
- 3.设置Notification的显示内容等属性(NotificationCompat.Builder)
mBuilder.setContentTitle("测试标题")//设置通知栏标题
.setContentText("测试内容") //设置通知栏显示内容
.setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL)) //设置通知栏点击意图
// .setNumber(number) //设置通知集合的数量
.setTicker("测试通知来啦") //通知首次出现在通知栏,带上升动画效果的
.setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间
.setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级
// .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
.setOngoing(false)//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
.setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合
//Notification.DEFAULT_ALL Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission
.setSmallIcon(R.drawable.ic_launcher);//设置通知小ICON
mBuilder.setContentTitle("测试标题")//设置通知栏标题
.setContentText("测试内容") //设置通知栏显示内容
.setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL)) //设置通知栏点击意图
// .setNumber(number) //设置通知集合的数量
.setTicker("测试通知来啦") //通知首次出现在通知栏,带上升动画效果的
.setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间
.setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级
// .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
.setOngoing(false)//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
.setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合
//Notification.DEFAULT_ALL Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission
.setSmallIcon(R.drawable.ic_launcher);//设置通知小ICON
这里基本包括了所有可能出现的一个Notification设置的选项,可根据自己的需求来选择其中的某几项或者全部来定制自己的Notification
- 4.设置PendingIntent
还有一点很重要,可以为Notification指定一个Action,通过PendingIntent来具体设置需要进行的Action
Intent intent = new Intent(context,XXX.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
mBuilder.setContentIntent(pendingIntent)
如果此时需要代码中清楚当前所有Notification,就需要使用PendingIntent来设置:
Intent deleteIntent = new Intent();
deleteIntent.setClass(context, DeleteReceiver.class);
deleteIntent.setAction(DELETE_ACTION); // DeleteReceiver的action就是DELETE_ACTION
notification.deleteIntent = PendingIntent.getBroadcast(context, 0, deleteIntent, 0);
或者这样:
public void clearAllNotify() {
mNotificationManager.cancelAll();// 删除你发的所有通知
}
这样(清除指定的Notification):
public void clearNotify(int notifyId){
mNotificationManager.cancel(notifyId);//删除一个特定的通知ID对应的通知
}
上面方法中的notifyId怎么设置?
private int notifyId = 100;//注意每一个Notification都是唯一的Id
...