位置: 编程技术 - 正文

Android中通知的使用-----Notification详解(android通知消息)

编辑:rootadmin

推荐整理分享Android中通知的使用-----Notification详解(android通知消息),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android 通知管理,安卓通知类型,安卓通知类型,android系统的通知,android系统设置通知管理,安卓通知app,安卓通知类型,安卓通知机制,内容如对您有帮助,希望把文章链接给更多的朋友!

Notification —— 通知,是一种让你的应用程序在不使用Activity的情况下警示用户。它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径。 Notification 是由NotificationManager(系统服务)统一管理的。

一般来说, 一个Notification应该传送的消息包括:

1 、一个状态条图标

2、在拉伸的状态栏窗口中显示额外的信息和启动一个Application的Intent

3、闪灯或LED

4、电话震动

在状态栏(Status Bar)中,通知主要有两类(使用FLAG_标记,后面讲解到):

1、正在运行的事件

2、通知事件

Notification图解如下:

Notification类介绍:

常量:

//表示发送一个Notification的所携带的效果

DEFAULT_ALL 使用默认字段

DEFAULT_LIGHTS 默认闪光

DEFAULT_SOUND 默认声音(uri,指向路径)

DEFAULT_VIRATE 默认震动,后来得知需要添加震动权限VIBRATE: android.permission.VIBRATE

PS:以上的效果常量可以累加,即通过mNotifaction.defaults |=DEFAULT_SOUND (有些效果只能在真机上才有,比如震动)

//设置Flag位

FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉

FLAG_NO_CLEAR 该通知不能被状态栏的清除按钮给清除掉

FLAG_ONGOING_EVENT 通知放置在正在运行

常用字段

contentView 通知在状态栏的显示View(自定义,具体请看下文) ,常与contentIntent配合使用,点击该通知后,

即触发contentIntent

contentIntent 设置PendingIntent对象,点击该通知时发送该Intent

flags 设置flag位,例如FLAG_NO_CLEAR等

defaults 添加效果

tickerText 显示在状态栏中的文字

when 发送此通知的时间戳

icon 设置图标

Android中通知的使用-----Notification详解(android通知消息)

常用方法介绍:

void setLatestEventInfo(Context context , CharSequence contentTitle,CharSequence contentText,PendingIntent contentIntent)

功能: 显示在拉伸状态栏中的Notification属性,点击后将发送PendingIntent对象。

参数: context 上下文环境

contentTitle 状态栏中的大标题

contentText 状态栏中的小标题

contentIntent 点击后将发送PendingIntent对象

另外的就是Notification的几步不同构造方法了,其构造方法的参数含义如上,请参考SDK 。

注意,关于通知(Notification)的显示类型有两种:

第一种:使用默认的形式(效果图如上显示)。具体使用是为Notification对象设置setLatestEventInfo()方法(该方法内部创建

了默认的RemoteViews对象,因此为默认显示),否则程序会报异常 ;

第二种: 使用自定义的View(RemoteViews对象)显示(功能更加自由,强大),具体方法为设置Notification对象的

contentView 属性和contentIntent属性 ,此时不需要设置setLatestEventInfo()方法。具体使用方法如下:

[java] view plaincopyNotification noti = new Notification(icon, title, when &#; ); noti.flags = Notification.FLAG_INSISTENT; // 1、创建一个自定义的消息布局 notification.xml // 2、在程序代码中使用RemoteViews的方法来定义image和text。然后把RemoteViews对象传到contentView字段 RemoteViews remoteView = new RemoteViews(this.getPackageName(),R.layout.notification); remoteView.setImageViewResource(R.id.image, R.drawable.icon); remoteView.setTextViewText(R.id.text , "Hello,this message is in a custom expanded view"); noti.contentView = remoteView; // 3、为Notification的contentIntent字段定义一个Intent(注意,使用自定义View不需要setLatestEventInfo()方法) //这儿点击后简答启动Settings模块 PendingIntent contentIntent = PendingIntent.getActivity (MainActivity.this, 0,new Intent("android.settings.SETTINGS"), 0); noti.contentIntent = contentIntent;

本文采用的RemoteViews资源文件如下:/layout/notification.xml

[java] view plaincopy<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@&#;id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" /> <TextView android:id="@&#;id/text" android:layout_width="wrap_content" android:layout_toRightOf="@&#;id/image" android:layout_height="wrap_content" android:textColor="#" /> <ProgressBar android:id="@&#;id/progress_horizontal" style="?android:attr/progressBarStyleHorizontal" android:layout_below="@&#;id/text" android:layout_toRightOf="@&#;id/image" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="" android:progress="" android:secondaryProgress="" /> </RelativeLayout>

效果图如下:

前面我们说过,NotificationManager是所有Notification的大管家,它的主要职责是加入/移除Notification。

NotificationManager类

通过获取系统服务来获取该对象:

NotificationManager mNotificationManager = (NotificationManager)getSystemServic(Context.NOTIFICATION_SERVICE) ;

常用方法:

public void cancelAll() 移除所有通知 (只是针对当前Context下的Notification)

public void cancel(int id) 移除标记为id的通知 (只是针对当前Context下的所有Notification)

public void notify(String tag ,int id, Notification notification) 将通知加入状态栏, 标签为tag,标记为id

public void notify(int id, Notification notification) 将通知加入状态栏,,标记为id

Demo如下:

说明: 示例Demo演示了创建两种不同类型的Notification , 实现起来也是很简单的。其实说到两种不同类型的使用

方式 ,其实内部原理是差不多的。

PS : 自定义Notification复用了文章之前的布局文件,请知晓。

[java] view plaincopypackage com.feixun.qin; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore.Audio; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.RemoteViews; import android.widget.RemoteViews.RemoteView; public class MainActivity extends Activity { private Button sendNotiBt; private int count = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); sendNotiBt = (Button) findViewById(R.id.sendNotiBt); sendNotiBt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub showDefaultNotification(); } }); } //自定义显示的通知 ,创建RemoteView对象 private void showCustomizeNotification() { CharSequence title = "i am new"; int icon = R.drawable.icon; long when = System.currentTimeMillis(); Notification noti = new Notification(icon, title, when &#; ); noti.flags = Notification.FLAG_INSISTENT; // 1、创建一个自定义的消息布局 view.xml // 2、在程序代码中使用RemoteViews的方法来定义image和text。然后把RemoteViews对象传到contentView字段 RemoteViews remoteView = new RemoteViews(this.getPackageName(),R.layout.notification); remoteView.setImageViewResource(R.id.image, R.drawable.icon); remoteView.setTextViewText(R.id.text , "通知类型为:自定义View"); noti.contentView = remoteView; // 3、为Notification的contentIntent字段定义一个Intent(注意,使用自定义View不需要setLatestEventInfo()方法) //这儿点击后简单启动Settings模块 PendingIntent contentIntent = PendingIntent.getActivity (MainActivity.this, 0,new Intent("android.settings.SETTINGS"), 0); noti.contentIntent = contentIntent; NotificationManager mnotiManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mnotiManager.notify(0, noti); } // 默认显示的的Notification private void showDefaultNotification() { // 定义Notication的各种属性 CharSequence title = "i am new"; int icon = R.drawable.icon; long when = System.currentTimeMillis(); Notification noti = new Notification(icon, title, when &#; ); noti.flags = Notification.FLAG_INSISTENT; // 创建一个通知 Notification mNotification = new Notification(); // 设置属性&#; mNotification.icon = R.drawable.icon; mNotification.tickerText = "NotificationTest"; mNotification.when = System.currentTimeMillis(); // 立即发生此通知 // 带参数的构造函数,属性&#;如上 // Notification mNotification = = new Notification(R.drawable.icon,"NotificationTest", System.currentTimeMillis())); // 添加声音效果 mNotification.defaults |= Notification.DEFAULT_SOUND; // 添加震动,后来得知需要添加震动权限 : Virbate Permission //mNotification.defaults |= Notification.DEFAULT_VIBRATE ; //添加状态标志 //FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉 //FLAG_NO_CLEAR 该通知能被状态栏的清除按钮给清除掉 //FLAG_ONGOING_EVENT 通知放置在正在运行 //FLAG_INSISTENT 通知的音乐效果一直播放 mNotification.flags = Notification.FLAG_INSISTENT ; //将该通知显示为默认View PendingIntent contentIntent = PendingIntent.getActivity (MainActivity.this, 0,new Intent("android.settings.SETTINGS"), 0); mNotification.setLatestEventInfo(MainActivity.this, "通知类型:默认View", "一般般哟。。。。",contentIntent); // 设置setLatestEventInfo方法,如果不设置会App报错异常 NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //注册此通知 // 如果该NOTIFICATION_ID的通知已存在,会显示最新通知的相关信息 ,比如tickerText 等 mNotificationManager.notify(2, mNotification); } private void removeNotification() { NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // 取消的只是当前Context的Notification mNotificationManager.cancel(2); } }

简单粗暴的图片压缩,可以压到kb以内 publicstaticBitmaprevitionImageSize(Stringpath)throwsIOException{BufferedInputStreamin=newBufferedInputStream(newFileInputStream(newFile(path)));BitmapFactory.Optionsoptions=newBitmapFactory.Options()

Android gpio口在sys_comfig中的参数意义 ;Port:端口组内序号功能分配内部电阻状态驱动能力输出电平状态;第一个尖括号:功能分配,0为输入,1为输出,2是可做IO口,6是中断口,其余不确定;第

在Android中实现截图功能 在实际应用中,经常需要对图片进行处理,包括压缩、截图等等,其实android系统提供了一个可以截图的activity,我们只需调用它就行了,下面示例完成

标签: android通知消息

本文链接地址:https://www.jiuchutong.com/biancheng/370942.html 转载请保留说明!

上一篇:Android使用volley发送带参数的post请求(Android使用活动需要去什么进行注册)

下一篇:简单粗暴的图片压缩,可以压到100kb以内(简单 粗暴)

  • 房屋租赁服务增值税税率是多少
  • 个税系统添加不了新的单位
  • 预收账款借方余额可以计入应收账款的哪方
  • 同一控制下企业合并和非同一控制下企业合并的区别
  • 营改增前未完工的老项目可以开专票吗
  • 冲以前年度成本会计处理
  • 无形资产的使用
  • 会计人士教你在Excel中如何计算年均增长率
  • 企业厂房整改应该计入什么科目?
  • 营改增后书据转移印花税是含税的吗?
  • 小规模纳税人税率3%减按1%
  • 进项税发票不认证可以吗
  • 设备安装税率是6%还是9%
  • 发票对方已认证怎么冲红
  • 竹笋属于什么税目类别
  • 所得税申报表中利润总额是怎样算出来的
  • 购入的商品用于捐赠怎么做分录
  • 电子发票没有发票号码是怎么回事
  • 现金折扣列题
  • 政府会计财政拨款收入借贷方向
  • win10怎么看电脑名称
  • 计提坏账准备的比例
  • 退货需要进行的操作
  • 购买加油卡怎么充值
  • 网络安全与安全教育内容
  • win10待机界面进不去系统怎么办
  • php statement
  • PHP:pg_lo_import()的用法_PostgreSQL函数
  • 微信php开发教程
  • 购进原材料款项怎么入账
  • 发票多盖了一个发票章咋办
  • thinkphp技术
  • php清除缓存的几个方法
  • php分段
  • 第二季度企业所得税怎么计提
  • code editing
  • php面向对象编程
  • 向梵高致敬油画
  • chat怎么用
  • php单例模式懒汉和饿汉
  • ps怎么把皮肤变红润
  • 应收账款计提减值准备的方法
  • 用友要怎么删除凭证
  • 加油的电子发票在哪里找
  • 进项税额不得从销项税额中抵扣是什么意思
  • 银行存款对账方法
  • PostgreSQL教程(十一):服务器配置
  • 劳务费个人所得税怎么查
  • 固定资产报废如何交增值税
  • 起征点与免征额的联系
  • 财付通支付的优缺点
  • 预交税会计分录
  • 出差补贴如何账务处理
  • 提交免税申请
  • 向法人借款凭证摘要怎么写
  • 工会经费的列支范围有哪些
  • 赔偿给别人的钱还能要回来吗
  • 营改增租赁服务有哪些
  • 建账有几种方法
  • mysql 常用
  • 电脑bios怎么设置usb启动
  • centos基本环境
  • win10打开小娜
  • hppusg.exe
  • software protection延迟启动
  • pcalc是什么软件
  • win7电脑无法上网 连接正常
  • win8系统启动不了如何修复
  • windows10无法识别
  • excel的exceladdinrd加载项出现问题
  • Unity3D游戏开发标准教程
  • [置顶]从lv2开始开挂的原勇者候悠闲的异世界生活
  • jquery瀑布流
  • python中如何获取列表中位数
  • javascript中array数组对象的含义及常用方法
  • Android ImageLoader 本地缓存
  • jquery如何解决跨域问题
  • android圆环进度条渐变
  • python定制函数
  • 税务执法资格考试
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设