Android Notification的使用

chatgpt/2023/9/27 16:10:09

在AndroidManifest.xml中添加权限

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

常用通知的写法,兼容android 8.0之后的版本

    private NotificationManager getNotificationManager() {return (NotificationManager) getSystemService(NOTIFICATION_SERVICE);}private Notification getNotification(String title) {//这里点击通知跳转的以MainActivity为例Intent notificationIntent = new Intent(this, MainActivity.class);PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);CharSequence name = "test";String description = "test_description";int importance = NotificationManager.IMPORTANCE_DEFAULT;NotificationChannel channel = new NotificationChannel("test1", name, importance);channel.enableVibration(true);channel.setVibrationPattern(new long[]{0, 1000, 1000, 1000});NotificationManager manager = getNotificationManager();NotificationCompat.Builder notification = new NotificationCompat.Builder(this).setContentTitle(title).setContentText("this is content text 123456789").setWhen(System.currentTimeMillis()).setSmallIcon(R.mipmap.ic_launcher).setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)).setChannelId("test1").setContentIntent(pi).setLights(Color.GREEN, 1000, 1000).setDefaults(NotificationCompat.DEFAULT_ALL).setAutoCancel(true);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//26,android 8.0channel.setDescription(description);NotificationManager notificationManager = getSystemService(NotificationManager.class);notificationManager.createNotificationChannel(channel);}//跳转通知管理页boolean isNotifyEnable = NotificationManagerCompat.from(getApplicationContext()).areNotificationsEnabled();boolean isChannelEnable = true;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//26,android 8.0isChannelEnable = channel.getImportance() != NotificationManager.IMPORTANCE_NONE;}if (isNotifyEnable && isChannelEnable) {//发送通知,或者做一些操作,比如设置通知内容//manager.notify(1, notification);notification.setContentText("123456789");} else if (!isNotifyEnable) {Intent intent = new Intent();if (!(getApplicationContext() instanceof Activity)) {intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);}if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//26,android 8.0intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);getApplicationContext().startActivity(intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()));} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//21,android 5.0intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");getApplicationContext().startActivity(intent.putExtra("android.provider.extra.APP_PACKAGE", getPackageName()));} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {//9,android 2.3intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setData(Uri.fromParts("package", getPackageName(), null));getApplicationContext().startActivity(intent);} else {System.out.println("低于9没有适配必要");}} else {System.out.println("只打开了通知开关,但是关闭了当前channel的通知,开发者需要根据通知重要性,自行决定如何提示用户");}return notification.build();}//发送通知public void sendNotification(String title) {getNotificationManager().notify(1,getNotification(title));}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5314828.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

2、Tomcat介绍(下)

组件分类 在Apache Tomcat中&#xff0c;有几个顶级组件&#xff0c;它们是Tomcat的核心组件&#xff0c;负责整个服务器的运行和管理。这些顶级组件包括&#xff1a; Server(服务器)&#xff1a;Tomcat的server.xml配置文件中的<Server>元素代表整个Tomcat服务器实例。每…

【迁移】Mysql数据库备份 迁移

【迁移】Mysql数据库备份 迁移 &#x1f4d4; 千寻简笔记介绍 千寻简笔记已开源&#xff0c;Gitee与GitHub搜索chihiro-notes&#xff0c;包含笔记源文件.md&#xff0c;以及PDF版本方便阅读&#xff0c;且是用了精美主题&#xff0c;阅读体验更佳&#xff0c;如果文章对你有…

JAVA基础原理篇_1.1—— 关于JVM 、JDK以及 JRE

目录 一、关于JVM 、JDK以及 JRE 1. JVM 2. JDK 3. JRE 二、为什么说 Java 语言“编译与解释并存”&#xff1f; 2.2 将高级编程语言按照程序的执行方式分为两种&#xff1a; 2.2 Java的执行过程&#xff1a; 2.3 所以为什么Java语言“编译与解释"共存&#xff1a…

Ansible:playbook

Ansible:playbook 一、playbook 剧本1.1 playbooks 本身由以下各部分组成1.2 示例1.2.1 运行playbook1.3 定义、引用变量1.4 指定远程主机sudo切换用户1.5 Templates 模块1.6 tags 模块1.7 Roles 模块1.7.1 roles 的目录结构1.7.2 roles 内各目录含义解释1.7.3 在一个 playboo…

SpringCloud Gateway 在微服务架构下的最佳实践

作者&#xff1a;徐靖峰&#xff08;岛风&#xff09; 前言 本文整理自云原生技术实践营广州站 Meetup 的分享&#xff0c;其中的经验来自于我们团队开发的阿里云 CSB 2.0 这款产品&#xff0c;其基于开源 SpringCloud Gateway 开发&#xff0c;在完全兼容开源用法的前提下&a…

【计算机视觉】BLIP:统一理解和生成的自举多模态模型

文章目录 一、导读二、背景和动机三、方法3.1 模型架构3.2 预训练目标3.3 BLIP 高效率利用噪声网络数据的方法&#xff1a;CapFilt 四、实验4.1 实验结果4.2 各个下游任务 BLIP 与其他 VLP 模型的对比 一、导读 BLIP 是一种多模态 Transformer 模型&#xff0c;主要针对以往的…

hive的metastore问题汇总

1. metastore内存飙升 1 问题 metastore内存飙升降不下来; spark集群提交的任务无法运行, 只申请到了dirver的资源; 2 原因 当Spark任务无法获取足够资源时&#xff0c;因为任务无法继续进行&#xff0c;不能将元数据从Metastore返回给任务 后&#xff0c;这些元数据暂存在…

【深度学习】MAT: Mask-Aware Transformer for Large Hole Image Inpainting

论文&#xff1a;https://arxiv.org/abs/2203.15270 代码&#xff1a;https://github.com/fenglinglwb/MAT 文章目录 AbstractIntroductionRelated WorkMethod总体架构卷积头Transformer主体Adjusted Transformer Block Multi-Head Contextual Attention Style Manipulation Mo…
推荐文章