Android 5.0 新技术研究-锁屏通知(一)

本文介绍了Android 5.0中锁屏通知的实现,包括Notification API的使用,如NotificationManager、NotificationBuilder、PendingIntent等。同时讲解了锁屏状态API,如PowerManager、KeyguardManager。并详细阐述了如何判断应用是否在后台运行,以及如何通过Notification显示、点击行为、进程管理实现通知功能。文章还探讨了在低版本Android系统中遇到的问题及其解决方案,如内容Intent、自定义布局、进度条显示等。
摘要由CSDN通过智能技术生成

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
    ...
  
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值