android之Notification通知

Android安卓状态栏消息推送通知(Notification) 我从不猜测,猜测是一个很坏的习惯——会影响正常的逻辑推理能力。              ——阿瑟·柯南·道尔 《福尔摩斯探案集》 近日,在做安卓项目开发的时候涉及到状态栏通知的需求,查了资料,总结一个简单有效的方法,下面放上代码(Kotlin版): //该代码为Kotlin,读者可根据需求稍作调整 val notificationManager = getSystemServi... 阅读详情

我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的。

[java:nogutter]  view plain copy
  1. package cn.com.chenzheng_java;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.Notification;  
  5. import android.app.NotificationManager;  
  6. import android.app.PendingIntent;  
  7. import android.content.Context;  
  8. import android.content.Intent;  
  9. import android.net.Uri;  
  10. import android.os.Bundle;  
  11. import android.provider.MediaStore.Audio;  
  12. import android.view.View;  
  13. import android.widget.Button;  
  14.   
  15. /*** 
  16.  * @description 状态栏通知相关 
  17.  * @author chenzheng_java 
  18.  *  
  19.  */  
  20. public class NotificationActivity extends Activity {  
  21.     @Override  
  22.     protected void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.notification);  
  25.   
  26.         Button button = (Button) findViewById(R.id.button);  
  27.         button.setOnClickListener(new View.OnClickListener() {  
  28.   
  29.             @Override  
  30.             public void onClick(View v) {  
  31.                 addNotificaction();  
  32.   
  33.             }  
  34.         });  
  35.   
  36.     }  
  37.       
  38.       
  39.       
  40.   
  41.     /** 
  42.      * 添加一个notification 
  43.      */  
  44.     private void addNotificaction() {  
  45.         NotificationManager manager = (NotificationManager) this  
  46.         .getSystemService(Context.NOTIFICATION_SERVICE);  
  47.         // 创建一个Notification  
  48.         Notification notification = new Notification();  
  49.         // 设置显示在手机最上边的状态栏的图标  
  50.         notification.icon = R.drawable.excel;  
  51.         // 当当前的notification被放到状态栏上的时候,提示内容  
  52.         notification.tickerText = "注意了,我被扔到状态栏了";  
  53.           
  54.         /*** 
  55.          * notification.contentIntent:一个PendingIntent对象,当用户点击了状态栏上的图标时,该Intent会被触发 
  56.          * notification.contentView:我们可以不在状态栏放图标而是放一个view 
  57.          * notification.deleteIntent 当当前notification被移除时执行的intent 
  58.          * notification.vibrate 当手机震动时,震动周期设置 
  59.          */  
  60.         // 添加声音提示  
  61.         notification.defaults=Notification.DEFAULT_SOUND;  
  62.         // audioStreamType的值必须AudioManager中的值,代表着响铃的模式  
  63.         notification.audioStreamType= android.media.AudioManager.ADJUST_LOWER;  
  64.           
  65.         //下边的两个方式可以添加音乐  
  66.         //notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");   
  67.         //notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");   
  68.         Intent intent = new Intent(this, Notification2Activity.class);  
  69.         PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);  
  70.         // 点击状态栏的图标出现的提示信息设置  
  71.         notification.setLatestEventInfo(this, "内容提示:", "我就是一个测试文件", pendingIntent);  
  72.         manager.notify(1, notification);  
  73.           
  74.     }  
  75.   
  76. }  

点击按钮时候,状态栏会显示:

看到了吧,状态栏多出来一个excel图标,当我按住图标不放,往下拖动的时候,出来了这个页面

然后,当我们点击这个对话框之后,就会触发intent,跳转到Notification2Activity.java这个activity。

----------------------------------------------------------------------------------------

注意,NotificationManager里的notify(id,notification)中的id是用来唯一标识我们当前的这个notification的标识符,我们通过cancel方法删除通知时,传递的就是这个值。可能读者在看很多文档的时候,发现这个地方指定了一个莫名奇妙的值,例如R.drawable.icon,很多朋友就纳闷了,为什么这里要指定一个图片呢。这里笔者就介绍下,为什么呢?

 答案其实很简单,我们都知道,我们这里对参数的唯一要求就是,这个id要和notify方法中的一致,并且是唯一;只要满足了这两项,其他的都无所谓。notify和cancel里一致我们作为开发者,太好控制了,但是唯一呢,我们还真不好说,于是这里就有些人动小脑筋了,很巧妙的用了我们系统中的图片资源或者其他资源的索引ID,我们都知道,这些值肯定都是唯一的!

------------------------------------------------------------------------------------------

下面是从网上找的一些资料:

  如果要添加一个Notification,可以按照以下几个步骤

1:获取NotificationManager:

NotificationManager m_NotificationManager=(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);

2:定义一个Notification:

  Notification  m_Notification=new Notification();

3:设置Notification的各种属性:

 //设置通知在状态栏显示的图标
m_Notification.icon=R.drawable.icon;
                
 //当我们点击通知时显示的内容
m_Notification.tickerText="Button1 通知内容.....";
                                
通知时发出的默认声音
m_Notification.defaults=Notification.DEFAULT_SOUND;

//设置通知显示的参数

Intent   m_Intent=new Intent(NotificationDemo.this,DesActivity.class);       
PendingIntent m_PendingIntent=PendingIntent.getActivity(NotificationDemo.this, 0, m_Intent, 0);

m_Notification.setLatestEventInfo(NotificationDemo.this, "Button1", "Button1通知",m_PendingIntent );

//这个可以理解为开始执行这个通知
m_NotificationManager.notify(0,m_Notification);

4:既然可以增加同样我们也可以删除。当然是只是删除你自己增加的。

  m_NotificationManager.cancel(0);   

  这里的0是一个ID号码,和notify第一个参数0一样。

这也就完成了,添加删除工作。

------------------------------------------------------------------------------------------------------

NoticificationManager很容易可以放在状态栏,也很容易实现从statusbar进入程序 中, 
NoticificationManager中通过intent执行此程序的activity就可以了

NoticificationManager状态栏操作

NotificationManager(通知管理器): 
NotificationManager负责通知用户事件的发生. 
NotificationManager有三个公共方法: 
1. cancel(int id) 取消以前显示的一个通知.假如是一个短暂的通知,试图将隐藏,假如是一个持久的通知,将从状态条中移走. 
2. cancelAll() 取消以前显示的所有通知. 
3. notify(int id,  Notification notification) 把通知持久的发送到状态条上.


//初始化NotificationManager: 
NotificationManager nm = 
      (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

Notification代表着一个通知. 
Notification的属性: 
audioStreamType 当声音响起时,所用的音频流的类型 
contentIntent 当通知条目被点击,就执行这个被设置的Intent. 
contentView 当通知被显示在状态条上的时候,同时这个被设置的视图被显示. 
defaults 指定哪个值要被设置成默认的. 
deleteIntent 当用户点击"Clear All Notifications"按钮区删除所有的通知的时候,这个被设置的Intent被执行. 
icon 状态条所用的图片. 
iconLevel 假如状态条的图片有几个级别,就设置这里. 
ledARGB LED灯的颜色. 
ledOffMS LED关闭时的闪光时间(以毫秒计算) 
ledOnMS LED开始时的闪光时间(以毫秒计算) 
number 这个通知代表事件的号码 
sound 通知的声音 
tickerText 通知被显示在状态条时,所显示的信息 
vibrate 振动模式. 
when 通知的时间戳.

将Notification发送到状态条上: 
Notification notification = new Notification(); 
Notification的设置过程…….. 
nm.notify(0, notification);   //发送到状态条上

------------------------------------------------------------------------------------------------------------

Notification提供了丰富的手机提示方式:

a)在状态栏(Status Bar)显示的通知文本提示,如:

notification.tickerText = "hello";

b)发出提示音,如:

notification.defaults = Notification.DEFAULT_SOUND;

notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");

notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");

c)手机振动,如:

notification.defaults = Notification.DEFAULT_VIBRATE;

long[] vibrate = {0,100,200,300};

notification.vibrate = vibrate;

d)LED灯闪烁,如:

notification.defaults = Notification.DEFAULT_LIGHTS;

notification.ledARGB = 0xff00ff00;

notification.ledOnMS = 300;

notification.ledOffMS = 1000;

notification.flags = Notification.FLAG_SHOW_LIGHTS;

4)发送通知:

private static final int ID_NOTIFICATION = 1;

mNotificationManager.notify(ID_NOTIFICATION, notification);

Android studio 28 通知栏报错Failed to post notification on channel "null" 今天老师上课上到通知,教材是第一行代码,可能教材上的源码太久了,我在用安卓9的时候,模拟器报错Failed to post notification on channel “null”,在网上查了很久才知道,Notification在android 26以上设置时,需要设置渠道信息才可以正常显示通知,这是 官方文档地址[https://developer.android.google.cn/abo... 阅读详情

相关推荐

实现Android常驻通知栏Notification的完整指南

Android Notification是Android系统中用于向用户显示应用状态更新的一种机制。它能够让应用在不打断用户当前操作的情况下,展示信息。随着Android版本的更新,Notification的管理和用户交互方式也发生了很大的变化。创建一个Notification Channel,首先需要定义一个Channel ID和Channel Name。Channel ID是一个字符串,用于在程序中唯一标识这个Channel。Channel Name是用户可见的名称,应简洁明了地描述通知的用途。

weixin_36073714的博客 1634

Notification通知

我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的。 [java:nogutter] view plaincopy package cn.com.chenzheng_java;      import and

zhen520的专栏 937

Android三种Notification(通知)方式

实现三种通知状态栏的方式

Android31_BroadcastReceiver及Notification

Notification及BroadcastReceiver 一、Notification: (一)、简介:         显示在手机状态栏的通知。Notification所代表的是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification。         Android3.0增加了Notification.Builder类

huohu1007的博客 1209

Android SMSNotify Android 短信通知源码

Android SMSNotify Android 短信通知源码 Android SMSNotify Android 短信通知源码

Android 中Notification弹出通知实现代码

NotificationManager 是状态栏通知的管理类,负责发通知、清除通知等操作。接下来通过本文给大家介绍Android 中Notification弹出通知实现代码,需要的的朋友参考下吧

Android10.0通知Notification的使用这一篇就够了

文章目录前言通知概述不同android版本上通知功能通知的结构创建通知1.创建渠道2.设置点击事件3.构造Notification对象并显示通知通知的操作通知渠道通知的级别 前言 最近一段时间写的都是android源码的文章,前几天在公司做了一个需求是关于前台服务的,在写前台服务的时候深入使用到了通知,今天就先写一篇文章总结一下通知的相关内容,后面有时间了在介绍一下前台服务的相关内容。 通知概述 ...

一只特立独行的猪 5万+

详解Android中Notification通知提醒

在消息通知时,我们经常用到两个组件Toast和Notification。特别是重要的和需要长时间显示的信息,用Notification就最 合适不过了。当有消息通知时,状态栏会显示通知的图标和文字,通过下拉状态栏,就可以看到通知信息了,Android这一创新性的UI组件赢得了用户的一 致好评,就连苹果也开始模仿了。今天我们就结合实例,探讨一下Notification具体的使用方法。  首先说明一下我们需要实现的功能是:在程序启动时,发出一个通知,这个通知在软件运行过程中一直存在,相当于qq的托盘一样。 然后再演示一下普通的通知和自定义视图通知, 那我们就先建立一个安卓项目。 然后编辑/res/

Android通知Notification使用全解析,看这篇就够了

通知是 Android 在您的应用 UI 之外显示的消息,用于向用户提供提醒、来自其他人的通信或来自您的应用的其他及时信息。用户可以点击通知打开您的应用或直接从通知中执行操作。本文将带领实现各种常见的通知功能,以及各个Android版本需要做的。 发起一个普通通知的几个要素:重要通知,优先级设置最高,会直接显示在屏幕内(前台),而不是只有通知抽屉里,所以一定要设置,不要引起用户的负面情绪。 这里有几个新增的配置:可以通过在通知上添加一个自定义操作,如上图:去看看。可以通过打开一个Activity,也可以是

yechaoa 2万+

Silly Tavern(酒馆)AI 角色扮演下载与安装教程(Windows本地部署)

SillyTavern是一款开源AI角色扮演前端工具,支持沉浸式对话和长期角色互动。本文详细介绍了在Windows系统F盘部署SillyTavern的完整流程,包括下载项目、安装Node.js和Git环境、配置路径、启动服务等关键步骤,并特别说明非系统盘路径可能遇到的npm安装问题及解决方法。成功启动后,用户可通过浏览器访问本地地址使用该工具进行AI角色扮演互动。

Tan3851的博客 1万+

四十一、Android Notification通知详解

根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时,把notification从通知栏里去掉。或者,只要程序在运行就一直显示通知栏图标。          下面对Notification类中的一些常量,字段,方法简单介绍一下:常量:DEFAULT...

weixin_34358092的博客 203

抖音小游戏上架避坑指南:从软著申请到ICP备案全流程解析

本文详细解析了抖音小游戏上架前必须完成的软著申请和ICP备案全流程,提供了清晰的时间线规划与实操避坑指南。文章重点阐述了个人与企业备案的区别、材料准备要点以及平台审核常见问题,旨在帮助独立开发者和小团队高效、合规地完成游戏上架,避免在行政流程中延误项目。

weixin_29276847的博客 1558

安卓开发 通知栏Notification详解

安卓开发通知栏Notification的详细介绍和用法示例

wm 6939

horizon之为connection服务器配置证书

打开connection1服务器(connection2 同connection1)再输入connection1的IP地址 可通过域名和IP地址进行登录。这时候用域名登录就发现证书已经没有警告了。win+R 调出“运行”,输入mmc。connection2 同上。如果还有报错请重启一下服务器。打开connection1。可以把这个先删掉 没用。打开DC_01服务器。右键选择证书颁发机构。友好名称只能是vdm。重启之后就没有报错了。

送个祝福给小豪的博客 2960

机器学习---xgboost算法

问题上表现的十分顶尖,本节将较详细的介绍XGBoost的算法原理。成和剪枝分别对应了经验风险最小化和结构风险最小化, XGBoost的决策树生成是结构风险最小。式(1.1)称为经验风险最小化,训练得到的模型复杂度较高。出结果, 是模型的输出结果;等式右边第⼀部分是模型的训练误差,第⼆部分是正则化项,这里。其中,F是假设空间,假设空间是在已知属性和属性可能取值的情况下,对所有可能满足目标的情。最小化,结构风险最小化的模型往往对训练数据以及未知的测试数据都有较好的预测。的正则化项是K棵树的正则化项相加而来的。

weixin_43961909的博客 1万+

安卓Notification通知栏全解

全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓通知栏是提醒用户信息有效手段,也是通过用户的行为触发事件服务的方式。 Notification允许在当前应用程序不活动或不可见时向用户发送信号。 创建通知栏有使用Notification直接创建何使用Notification.Builder创建两种方法 1、使用Notification直接创建通知栏 private

1865

PLSQL 14.0.6 下载使用教程

众所周知,PLSQL 只是一个oracle第三方开发测试工具,它依赖oracle 客户端搭配使用,但是oracle 客户端有2G,相当庞大,不建议安装。所以我们如果下载安装好PLSQL,再下载好轻量级的支持远程链接的oracle客户端,这样搭配使用可以的话就最好了,答案是可以的。 第一步: PLSQL 下载与安装 PLSQL 14.0.6 下载地址 : https://www.allroundautomations.com/registered-plsqldev/ 下载下来,除了安装路径更改一下,

qq976511508的博客 2134

Android通知栏-Notification(通知消息)

1.概述 当应用程序在后台运行,希望向用户发出一些提示学习,就需要借助Notification(通知)来实现。在发出一条通知后,手机最上方的状态栏会显示一个通知的图标,下拉状态栏后就可以看到通知的详细内容。 1.1 视图分类 Notification有两种视觉风格,一种是标准视图(Normal View),另外一种是大视图(Big view)。标准视图在Android中各...

云上道人的博客 4万+

高精度地图数据的结构

本文是个人在学习高精度地图数据结构的心得,主要是描述高精度地图的几层数据结构以及元数据信息。

qq_40664711的博客 5575

手把手教你学Simulink——基于Simulink的电压型 vs 电流型整流器性能对比

摘要:本文基于Simulink平台对比分析了电压型整流器(VSR)和电流型整流器(CSR)的性能差异。VSR采用电容滤波,具有高功率因数(PF>0.99)、低输入电流THD(<3%)等优势,但动态响应较慢;CSR采用电感滤波,动态响应快(<0.05s),但THD较高(5%~8%)。研究建立了统一测试平台,详细对比了两者在稳态性能、动态响应、效率等方面的差异,并给出了控制算法实现和参数优化建议。通过量化分析,为电力电子工程师提供了拓扑选型依据,可根据恒压/恒流需求选择最优方案,有效缩短开发周

MHD0815的博客 173

通知栏如何更新android,安卓状态栏通知Notification方法更新(setLatestEventInfo)

今天使用安卓状态栏通知的时候,发现Notification的setLatestEventInfo构造方法画上的横线,也就是以前版本的方法,将要舍弃,强迫症没办法啊,于是查询资料找到了最新的构造方法,留存下吧。Notification notification = new Notification.Builder(context).setContentTitle("标题")//设置通知标题.setC...

weixin_35131425的博客 1327

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android实现通知,Android中的3种通知Notification

Android中的Notification分为三种:1、普通Notification2、折叠Notification3、悬浮Notification1、普通Notification//普通通知val mIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://blog.youkuaiyun.com/qq_40716430/article/details/10...

weixin_42347869的博客 833

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android发送通知——通知栏(Notification)

通知是指 Android 在您应用的界面之外显示的消息,旨在向用户提供提醒、来自他人的通信信息或您应用中的其他实时信息。在发出一条通知后,手机最上方的状态栏会显示一个通知的图标,下拉状态栏后就可以看到通知的详细内容。用户可以点按通知来打开应用,或直接从通知中执行操作。

weixin_43977664的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android-Notification安卓手机通知栏通知的开发

一、概述           Notification是显示在手机状态栏的消息(手机状态栏位于手机最顶端),代表一种全局效果的通知。 二、通知栏的内容        图标、标题、内容、时间、点击后响应 三、实现通知栏      (1)获取NotificationManager。      (2)显示通知栏:notify(id, notification);      (3)取消通知栏

雨泪不轻扬 1577

安卓中Notification通知的详解

这是关于androidNotification的详解,希望可以帮助到大家

知他人之所知,晓他人之不晓。 2216
上一篇: 浅谈android的selector,背景选择器
下一篇: Android实现程序前后台切换效果
Jymot
博客等级 码龄14年 6粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值