附上源码地址 https://github.com/ZhongchengWu/NotificationBar
Android 8.0系统新增了通知栏渠道。
首先,如果你升级了appcompat库,那么所有使用appcompat库来构建通知的地方全部都会进行废弃方法提示,如下所示:
所以,一定要对通知栏进行适配。
创建好项目之后,打开app/build.gradle文件检查一下,确保targetSdkVersion已经指定到了26或者更高
compileSdkVersion28
defaultConfig{
applicationId"com.example.wuzhongcheng.notificationbar"
minSdkVersion26
targetSdkVersion28
versionCode1
versionName"1.0"
testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"
}
首先要确保的是当前手机的系统版本必须是Android 8.0系统或者更高,因为低版本的手机系统并没有通知渠道这个功能,我做了一个判断,从而创建了通知渠道。
NotificationCompat.Builder 用来设置一些通知栏的属性
Channel是渠道
Manager用来对通知栏进行一些更新或者删除
像播放器这种,如何对通知栏的按钮设置点击?
RemoteViews没有专门的setOnclickListener方法,但是我们可以通过setOnClickPendingIntent将控件的id和pendingIntent进行绑定
通过Intent发送信息给我们这个MediaNotificationService,Extra里面包含了指令(上一首,下一首),但这并不能实现效果,还需要将intent添加到pendingIntent中,通过mBuilder设置
通过重写onStartCommand方法来接受发送的信息
然后对接收的信息做一个判断,从而进行上一首亦或是下一首/暂停/播放
最后要记住一点,每次操作完之后要对通知栏的状态进行一个更新
删除通知栏?
这里同样有一个版本判断的问题,在8.0及以上版本需要调用deleteNotificationChannel来删除渠道,低版本直接stopForground停止前台显示
网友评论