android 锁屏通知

最近有个需求,说要弄个锁屏通知,通知倒是做过很多了,锁屏通知还真没弄过,经过一番研究,这里做个记录,方便搬砖。

话不多少,直接上效果图:

 直接上代码:

安卓系统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开发官网通知地址:

通知概览  |  Android 开发者  |  Android Developers

demo    android锁屏通知小DEMO-Android文档类资源-CSDN下载

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值