最近有个需求,说要弄个锁频通知,通知倒是做过很多了,锁屏通知还真没弄过,经过一番研究,这里做个记录,方便搬砖。
话不多少,直接上效果图:
直接上代码:
安卓系统7以及以下:
- Notification.MediaStyle style = new Notification.MediaStyle();
- Intent intent = new Intent(this,MainActivity.class);
- PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
- NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- Notification notification = new Notification.Builder(this)
- .setContentTitle("这是测试通知标题") //设置标题
- .setContentText("这是测试通知内容") //设置内容
- .setWhen(System.currentTimeMillis()) //设置时间
- .setSmallIcon(R.mipmap.ic_launcher) //设置小图标 只能使用alpha图层的图片进行设置
- .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) //设置大图标
- .setContentIntent(pi)
- .setStyle(style)
- .setAutoCancel(true)
- .build();
- manager.notify(1,notification);
关键在于要用这个MediaStyle,此代码运行在Android11、12 没问题,but,
需要指定目标版本为23到25,如图:
- defaultConfig {
- applicationId "com.example.myapplication"
- minSdk 23
- targetSdk 25
- versionCode 1
- versionName "1.0"
- }
安卓系统8.0及以上:
由于8.0以上改变比较大,要求必须使用通知渠道,不然无法显示通知,
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- String channelId = "imservice";
- String channelName = "前台通知渠道测试";
- String description = "测试内容";
- int importance = NotificationManager.IMPORTANCE_HIGH;// 这个重要等级设置低的话,需要手动去设置页面打开通知渠道
- NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
- channel.setSound((Uri) null, (AudioAttributes) null);
- channel.setDescription(description);
- channel.enableVibration(true);//设置振动
- notificationManager.createNotificationChannel(channel);
- Intent intent = new Intent(this, MainActivity.class);
- PendingIntent pi = PendingIntent.getActivity(this,0,intent ,0);
- int notifyID = 1;
- Notification notification = new Notification.Builder(this, channelId)
- .setContentTitle("通知标题")
- .setContentText("通知内容")
- .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher))
- .setSmallIcon(R.mipmap.ic_launcher)
- .setContentIntent(pi)
- .setStyle(new Notification.MediaStyle())
- .setAutoCancel(true)
- .build();
- notificationManager.notify(notifyID, notification);
- }
一样,要想通知显示在锁频界面,这个MediaStyle很重要,
- defaultConfig {
- applicationId "com.example.myapplication"
- minSdk 23
- targetSdk 30
- versionCode 1
- versionName "1.0"
- }
好了,又可以愉快玩耍了。
Android开发官网通知地址: