安卓APP_ 控件(6)—— Notification通知

摘自:安卓APP_ 控件(6)—— Notification通知
作者:丶PURSUING
发布时间: 2021-04-02 00:30:14
网址:https://blog.csdn.net/weixin_44742824/article/details/115382674

Notification通知的使用

  • 一、创建一个NotificationManager
  • 二、使用Builder构造器来创建Notification对象
  • 三、通知渠道:NotificationCannel
  • 四、通过链式结构设置notification的属性
    • (1)`setSmallIcon`应该注意的是:
    • (2)`setContentIntent`点击通知后的跳转意图
  • 五、更多细节在实例注释中呈现

效果一览

实现效果:点击发送通知,系统发来通知;可以通过下拉任务栏进行跳转查看;也可以直接点击消息进行跳转查看;也可以点击按钮取消通知。如下图:

在这里插入图片描述

一、创建一个NotificationManager

NotificationManager类是一个通知管理器类,这个对象是由系统维护的服务,是以单例模式的方式获得,所以一般并不直接实例化这个对象。

在Activity中,可以使用getSystemService方法获取NotificationManager对象,这个方法可以通过Android系统级服务的句柄返回对应的对象。在这里需要返回NotificationManager,所以直接传递NOTIFICATION_SERVICE即可。

具体是实现:

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  • 1

NotificationManager是做格式的强制转换

二、使用Builder构造器来创建Notification对象

使用NotificationCompat类的Builder构造器来出创建Notification对象,可以保证程序在所有版本上都能正常工作。Android8.0新增了通知渠道这个概念,如果没有设置,则通知无法在Android8.0的机器上显示。

Notification notification = new NotificationCompat.Builder(this,"zhua")
  • 1

context:表示环境

三、通知渠道:NotificationCannel

Android8.0引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。

在这里插入图片描述


重要的三个参数:

(1)id:channelld,即为渠道id
(2)name:信息
(3)importance:通知的重要程度

通知重要程度设置是在NotificationManager类:

在这里插入图片描述

参数通知弹出提示音状态栏
NONE××××
MIN×××
LOW××
DEFAULT×
HIGH

四、通过链式结构设置notification的属性

即为设置通知属性。

具体要有哪些属性后面的实例代码中给了很详细的说明。下面对两个易错点进行记录。

(1)setSmallIcon应该注意的是:

从Android5.0系统开始,对于通知栏图标的设计进行了修改,现在Google要求,所有的应用程序的通知栏图标,应该只是用alpha图层来进行绘制,而不应该包括RGB图层。

要学会看参数,例如下面这个就是要你传入rbg参数进行颜色的设置
在这里插入图片描述

(2)setContentIntent点击通知后的跳转意图

我们设置了一个跳转的界面,在新的类中,要进行“注册”(不然死活不会跳转,也不报错,很烦)
在这里插入图片描述

五、更多细节在实例注释中呈现

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!--    方法名称为sendNote,快捷键跳转直接在java中具体实现--><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="sendNote"android:text="发出通知" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="canselNote"android:text="取消通知" /></LinearLayout>

MainAvtivity.java

public class MainActivity extends AppCompatActivity {//创建一个全局对象:NotificationManagerprivate NotificationManager manager;//创建一个全局对象:notificationprivate Notification notification;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//使用getSystemService方法获取NotificationManager对象manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);//如果是8.0及以上,我们才创建这个对象;(之前踩坑了,搞了个4.0版本的工程死活收不到通知)if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){NotificationChannel channel = new NotificationChannel("zhua", "测试通知",NotificationManager.IMPORTANCE_HIGH);//创建了channel如何使用它:用NotificationManager的通知管理类manager.createNotificationChannel(channel);//让channelid和manager绑定上了关系}//创建跳转意图Intent intent = new Intent(this,NotificationActivity.class);//setContentIntent跳转意图中需要传入的参数:pendingIntent PendingIntent pendingIntent = PendingIntent.getActivities(this, 0, new Intent[]{intent}, 0);//直接通过链式结构设置notification的属性(设置通知的属性)notification = new NotificationCompat.Builder(this,"zhua")//标题(必须).setContentTitle("官方通知")//通知内容(必须).setContentText("华天朱来了")//通知的小图标(必须)这个图片不能是RGB的.setSmallIcon(R.drawable.ic_baseline_account_box_24)//通知的大图标:这个参数需要的是图片的bitmap类型,所以要进行BitmapFactory转换.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.head))//设置通知图标栏图标为红色:setColor传入参数是argb.setColor(Color.parseColor("#ff0000"))//不是普通的intent,而是pandding intent,要在上面进行创建.setContentIntent(pendingIntent)//点击通知后通知会取消.setAutoCancel(true).build();}public void sendNote(View view) {//两个参数,第一个是id,点击进去发现没什么要求,随便写一个1manager.notify(1,notification);}public void canselNote(View view) {manager.cancel(1); //这个取消通知的id要和上面那个来通知对应}
}

NotificationActivity.java

//这里自己创建的类,为跳转意图,一定要在这个地方alt+enter进行关联
public class NotificationActivity extends Activity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//做个简单的打印看一下效果Log.e("zhua", "onCreate: 进入NotificationActivity" );}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓APP_ 控件(7)——Toolbar栏目样式

摘自&#xff1a;安卓APP_ 控件&#xff08;7&#xff09;——Toolbar栏目样式 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-02 15:42:07 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115395997 Toolbar栏目样式 什么是Toolbar?设置…

Gartner:2013年SIEM市场分析(MQ)

2013年5月7日&#xff0c;Gartner一年一度的SIEM magic quadrant报告出炉了。如下图&#xff1a;对比一下去年的MQ矩阵&#xff1a;简言之&#xff0c;上榜厂商减少到16个&#xff0c;Q1Labs在三强竞争中稍占上风&#xff0c;Arcsight有所退步&#xff0c;Splunk终于跻身第一阵…

北林计算机考研真题答案,真题解析|『北林』2020年考研初试真题

原标题&#xff1a;真题解析&#xff5c;『北林』2020年考研初试真题真题解析&#xff5c;『北林』2020年考研初试真题前言从今年的考试题型来看未做改变&#xff0c;(选择、名词解释、简答、论述)但分数分布略有更改。从考试内容来看&#xff0c;基本持平于去年的难易程度&…

安卓APP_ 控件(8)—— AlertDialog

摘自&#xff1a;安卓APP_ 控件&#xff08;8&#xff09;—— AlertDialog 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-02 18:13:20 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115400659 显示对话框&#xff0c;效果如下图&…

安卓APP_ 控件(9)—— PopupWindow弹窗

摘自&#xff1a;安卓APP_ 控件&#xff08;9&#xff09;—— PopupWindow弹窗 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-05 14:41:35 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115405555 实现效果如下&#xff1a; 点击触发…

计算机网址登录教程,melogincn电脑登录教程

请问melogincn使用电脑登录设置的教程&#xff1f;在电脑上怎么登陆水星(美科星)无线路由器的后台&#xff0c;通过melogincn&#xff0c;试了下发现不知道如何打开&#xff0c;求分享用melogincn用电脑登录设置的教程。使用环境描述&#xff1a;melogincn实际上应该是melogin.…

从外网给新建的Exchange 2007/2010分发通讯组发邮件失败

前几天部署Exchange2010时建立了几个通讯组邮箱&#xff0c;测试下来发现只有exchange内部组员进行邮件交流没有问题&#xff0c;外网发送到组邮箱时会收到#550 5.7.1 RESOLVER.RST.AuthRequired; authentication required ##的错误&#xff0c;当时没有找出问题原因&#xff0…

安卓APP_ 布局(1)—— LinearLayout

摘自&#xff1a;安卓APP_ 布局&#xff08;1&#xff09;—— LinearLayout 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-05 16:46:22 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115442240 LinearLatout 一、orientation&#xf…

鼠标点击测试_鼠标键盘如何检测故障,这边教您简单的测试

沉迷&#xff0c;教您简单的测试鼠标故障。有线键盘和鼠标的检测步骤&#xff1a;(1)将电脑关机&#xff0c;拔插对应的连接线。(2)移除所有除了键盘和鼠标之外的设备&#xff0c;然后重启电脑。(3)重启后&#xff0c;观察鼠标的灯是否有亮。点击滚动锁定键&#xff0c;观察键盘…

影响计算机的速度有哪些,影响电脑速度的硬件有哪些

影响电脑速度的硬件有哪些?影响最直接的是cpu、内存条、硬盘。其次是主板、显卡。一、处理器cpucpu是电脑的大脑&#xff0c;是运算核心和控制核心&#xff0c;它的主要作用是处理指令和数据&#xff0c;电脑所有的硬件工作分工都市cpu分配和协调的。所以&#xff0c;cpu的层次…

atom编写python程序_编写我们的第一个Python程序,print.py

Python安装后&#xff0c;默认会安装很多功能模块&#xff0c;方便开发应用程序时调用&#xff0c;需要增加默认功能模块以外的模块时&#xff0c;使用的是PIP 这个工具&#xff0c;把需要模块安装到C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\Lib\sit…

安卓APP_ 布局(2) —— RelativeLayout相对布局

摘自&#xff1a;安卓APP_ 布局&#xff08;2) —— RelativeLayout相对布局 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-05 20:19:54 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115445242 RelativeLayout 一、根据父容器定位二、…

mutli-lane情况

PCIE3.0支持x1,x2,x4,x8,x16,x32 Lane widths. 在多条Lane情况下&#xff0c;有2类symbol framing&#xff0c;一类包含Ordered Sets&#xff0c;一类是TLP和DLLP。 Ordered Sets会同时在每条Lane上传输&#xff0c;所以每条Lane都会有完整的OS. 对于TLP/DLLP来说&#xff0c;S…

win10英雄联盟登录服务器未响应,win10系统英雄联盟登陆不上的解决方法

很多小伙伴都遇到过win10系统英雄联盟登陆不上的情况&#xff0c;想必大家都遇到过win10系统英雄联盟登陆不上的情况吧&#xff0c;那么应该怎么处理win10系统英雄联盟登陆不上呢&#xff1f;我们依照1、尝试打开网页或登录QQ查看是否正常能打开/登录&#xff0c;如果可以打开可…

玩转SSRS第六篇---客户端报表进阶

上一篇介绍了客户端报表的基本开发。此篇讲介绍如何给客户端报表自定义开发数据源。 通过上一篇我们知道可以通过Dataset的方式给报表添加数据源&#xff0c;这种方式通过UI操作的方式相对来说比较简单。此外我们也可以通过其它方式为客户端报表提供数据源&#xff0c;使数据的…

安卓APP_ 布局(3) —— FrameLayout帧布局

摘自&#xff1a;安卓APP_ 布局&#xff08;3) —— FrameLayout帧布局 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-05 20:41:02 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115447658 帧布局的机制 从左上角开始绘制。 若有重叠&…

wpf page 界面渲染完成后执行自动操作_Vue项目骨架屏自动生成方案(dps)

什么是骨架屏什么是骨架屏呢&#xff1f;骨架屏(Skeleton Screen)是指在页面数据加载完成前&#xff0c;先给用户展示出页面的大致结构&#xff08;灰色占位图&#xff09;&#xff0c;在拿到接口数据后渲染出实际页面内容然后替换掉。Skeleton Screen 是近两年开始流行的加载控…

js等待当前线程内ajax完成,理解javascript定时器中的单线程

一、JavaScript 引擎是单线程的可以从下面的代码中看到&#xff0c;第一个用setTimeout中的代码是死循环&#xff0c;由于是单线程&#xff0c;下面的两个定时器就没机会执行了。setTimeout( function(){ while(true){} } , 100);setTimeout( function(){ alert(你好!setTimeou…

虚拟机安装与概述(3)

创建虚拟机点击”文件“菜单——新建——”新建虚拟机“命令点击新建虚拟机&#xff0c;进入新建虚拟机向导&#xff01;配置类型选择“标准”&#xff0c;然后点击下一步打开新建虚拟机安装向导&#xff0c;安装从&#xff1a;安装盘镜像文件&#xff08;iso&#xff09;点击”…

安卓APP_ 布局(4) —— TableLayout表格布局

摘自&#xff1a;安卓APP_ 布局&#xff08;4) —— TableLayout表格布局 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-04-11 22:55:50 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/115448051 如果直接在TableLayout中写入控件&#xf…