• android 锁屏通知


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

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

     直接上代码:

    安卓系统7以及以下:

    1. Notification.MediaStyle style = new Notification.MediaStyle();
    2. Intent intent = new Intent(this,MainActivity.class);
    3. PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
    4. NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    5. Notification notification = new Notification.Builder(this)
    6. .setContentTitle("这是测试通知标题") //设置标题
    7. .setContentText("这是测试通知内容") //设置内容
    8. .setWhen(System.currentTimeMillis()) //设置时间
    9. .setSmallIcon(R.mipmap.ic_launcher) //设置小图标 只能使用alpha图层的图片进行设置
    10. .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) //设置大图标
    11. .setContentIntent(pi)
    12. .setStyle(style)
    13. .setAutoCancel(true)
    14. .build();
    15. manager.notify(1,notification);

    关键在于要用这个MediaStyle,此代码运行在Android11、12 没问题,but,

    需要指定目标版本为23到25,如图:

    1. defaultConfig {
    2. applicationId "com.example.myapplication"
    3. minSdk 23
    4. targetSdk 25
    5. versionCode 1
    6. versionName "1.0"
    7. }

    安卓系统8.0及以上:

    由于8.0以上改变比较大,要求必须使用通知渠道,不然无法显示通知,

    1. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    2. NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    3. String channelId = "imservice";
    4. String channelName = "前台通知渠道测试";
    5. String description = "测试内容";
    6. int importance = NotificationManager.IMPORTANCE_HIGH;// 这个重要等级设置低的话,需要手动去设置页面打开通知渠道
    7. NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
    8. channel.setSound((Uri) null, (AudioAttributes) null);
    9. channel.setDescription(description);
    10. channel.enableVibration(true);//设置振动
    11. notificationManager.createNotificationChannel(channel);
    12. Intent intent = new Intent(this, MainActivity.class);
    13. PendingIntent pi = PendingIntent.getActivity(this,0,intent ,0);
    14. int notifyID = 1;
    15. Notification notification = new Notification.Builder(this, channelId)
    16. .setContentTitle("通知标题")
    17. .setContentText("通知内容")
    18. .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher))
    19. .setSmallIcon(R.mipmap.ic_launcher)
    20. .setContentIntent(pi)
    21. .setStyle(new Notification.MediaStyle())
    22. .setAutoCancel(true)
    23. .build();
    24. notificationManager.notify(notifyID, notification);
    25. }

    一样,要想通知显示在锁频界面,这个MediaStyle很重要,

    1. defaultConfig {
    2. applicationId "com.example.myapplication"
    3. minSdk 23
    4. targetSdk 30
    5. versionCode 1
    6. versionName "1.0"
    7. }

    好了,又可以愉快玩耍了。

    Android开发官网通知地址:

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

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

  • 相关阅读:
    吲哚菁绿ICG标记海藻酸钠|ICG-海藻酸钠|alginate-Indocyaninegreen
    mac新环境
    基于Redis的分布式限流器Java实现
    [图文教程]如何不买苹果电脑来体验类Unix的感觉呢?Linux装机初体验,manjaro笔记本电脑,爆改Windows笔记本
    Python 微信自动化工具开发系列04_所有微信群的群文件自动同步拷贝到群名对应的新文件夹中(2022年8月可用)
    防孤岛保护装置在光伏行业的应用
    HTTP协议:最常用的应用层
    .Net Core WebApi 6.0 及Swagger文档基本创建
    Minio分布式存储入门(使用新版本)
    《HTML基础学习》
  • 原文地址:https://blog.csdn.net/msn465780/article/details/126076233