Android之Notification初识

本文详细介绍了Android中创建并配置通知的过程,包括使用NotificationManager类和Notification类的常用属性,以及如何通过PendingIntent处理点击通知后的操作。同时,对比了API11之前和之后的创建方式,并提供了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.Notification创建

   首先,介绍一下,创建一个通知所需要用到的类和方法

   

 NotificationManager类

 NotificationManager类是用来管理系统的所有通知的类,该类的对象必须通过Context类的getSystemService()方法获取。完整代码:

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

  notify()作用是告知系统显示该通知,有notify (int id, Notification notification)和notify (String tag,int id, Notification

  notification),id表示通知的id,tag表示通知的标志,主要用于区分各个通知,notification指的是通知对象;

 cancel(int id) 表示移除指定id的通知,cancel(String tag,int id)移除指定Id和tag的通知,cancelAll()移除所有通知。

  Notification类

   notification有一些常用的属性:

    icon 设置通知图标(在API23后使用setSmallIcon(Icon)替代)

    number 通知所显示的事件数量,例如,收到邮件通知,则指的是邮件未读数量(这是用API11创建的通知所表现的作用)。如果通知是用Notification.builder创建,则number表示扩展通知视图,为0或者负数的时候,通知不显示。

   tickerText 通知显示在通知栏的文本,只在通知栏上显示一次。

   when 系统当前时间

   flags 取值有:

                FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉
FLAG_NO_CLEAR 该通知不能被状态栏的清除按钮给清除掉
FLAG_ONGOING_EVENT 通知放置在正在运行
FLAG_INSISTENT 是否一直进行,比如音乐一直播放,知道用户响应

   
    defaults 设置默认值

DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等等
DEFAULT_LIGHTS 使用默认闪光提示
DEFAULT_SOUND 使用默认提示声音
DEFAULT_VIBRATE 使用默认手机震动

  contentView 拉下通知栏后,通知条显示视图,类型是RemoteView;


 contentIntent 点击通知条控件时,响应的意图


   一些常用的方法

    构造方法:

     public Notification (int icon, CharSequence tickerText, long when),如果使用属性的方式设置这些值,那也可以使用无参构造函数
  
  在API11之后使用Notification.builder()创建

   setLatestEventInfo(Context context,CharSequence title, CharSequence content, PendingIntent intent);
             本方法用于显示通知栏下拉后,通知条的内容。

 PendingIntent类

PendingIntent这个类用于处理即将发生的事情。

该对象的获取方式为, PendingIntent.getActivity(Context context,int requestCode,Intent intent,int flags);requsetCode和flags一般默认设置为0;


下面用上面提到的知识,写一个简单的通知(基于API11之前):

public void showBaseNotification() {
		NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		Notification notify = new Notification();
		notify.icon = R.drawable.ic_launcher;
		notify.tickerText = "您有新短消息,请注意查收!";
		notify.when = System.currentTimeMillis();
		PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
				new Intent(this, MainActivity.class), 0);
		notify.setLatestEventInfo(this, "Notification Title",
				"This is the notification message", pendingIntent);
		notify.number = 1;
		notify.flags |= Notification.FLAG_AUTO_CANCEL; 
		// 通过通知管理器来发起通知。如果id不同,则每click,在statu那里增加一个提示
		manager.notify(1, notify);
	}

 基于API11之后:

	public void showNotification() {
		NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		NotificationCompat.Builder nb = new NotificationCompat.Builder(
				getApplicationContext())
				.setContentIntent(
						PendingIntent.getActivity(MainActivity.this, 0,
								new Intent(this, MainActivity.class),
								PendingIntent.FLAG_UPDATE_CURRENT))
				.setAutoCancel(true)
				.setContentTitle("test title")
				.setContentText("message")
				.setSmallIcon(R.drawable.ic_launcher)
				.setLights(Color.RED, 600, 1000)
				.setVibrate(new long[] { 0, 200, 300, 500 })
				.setSound(
						RingtoneManager
								.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
		manager.notify(1, nb.build());

	}



   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值