Android通知 ---- Notification

通知【Notification】
位于标题栏之下,通常用于提醒用户,内容为一些应用程序的推送消息和电池信息等。
通常是使用NotificationManager来管理通知的。

使用Notification.Builder来构建通知的对象。
setDefaults(int defaults)   设置通知的led灯或者振动信息
setContentTitle(CharSequence title):设置通知的标题
setContentText(CharSequence text):设置通知的内容
setAutoCancel(boolean autoCancel):设置点击通知栏之后,是否自动删除通知信息
setSmallIcon(int icon):为通知栏设置小图标。
setLargeIcon(Bitmap icon):为通知栏设置大图标
setTicker(CharSequence tickerText):设置通知栏的提示文本
setContentIntent(PendingIntent intent):设置点击通知后将启动的程序组件

发送通知的步骤:
1.通过调用context的getSystemService方法获取系统的通知服务管理器NotificationManager
2.通过构造器创建一个NotificationCompat.Builder对象。
3.调用builder的相关方法,设置通知属性。
4.通过调用builder的build方法,设置通知的对象。
5.通过通知管理器的notify对象,发送通知。

实例:

public class MainActivity extends Activity {
	private NotificationManager manager;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//1、初始化通知管理器的系统服务
		manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
	}
	
	public void notify01(View view){
		//2.构建通知
		NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
		//3.设置内容
		//设置小图标(必须要指定的,如果大图标没有被指定,那么小图标就显示在大图标的位置上)
		builder.setSmallIcon(R.drawable.d_baibai);
		//设置大图标
		Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.d_bizui);
		builder.setLargeIcon(bm);
		//设置标题
		builder.setContentTitle("提示信息");
		//设置内容
		builder.setContentText("恭喜你,被《奔跑吧,兄弟》选中,获得了笔记本电脑一台,手机一部,现金8888元,快来领奖吧!!");
		//设置提示用户的信息
		builder.setTicker("你有一条新消息!!!");
		//设置时间
		builder.setWhen(System.currentTimeMillis());
		//设置优先级
		builder.setPriority(Notification.PRIORITY_HIGH);
		//设置跳转界面
		PendingIntent pi = PendingIntent.getActivity(this, 100, new Intent(this, SecondActivity.class), PendingIntent.FLAG_ONE_SHOT);
		builder.setContentIntent(pi);
		//设置一值显示,点击之后才消失
		builder.setAutoCancel(true);
		//获取通知对象
		Notification notification = builder.build();
		//发送通知
		manager.notify(1, notification);
		
	}
	
	//进度条通知
	public void notify02(View view){
		new Thread(){
			public void run() {
				//1.获取builder对象
				NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
				//2.设置小图标
				builder.setSmallIcon(R.drawable.d_beishang);
				builder.setTicker("正在下载中....");
				builder.setContentTitle("下载文件");
				builder.setContentText("正在下载中....");
				
				for (int i = 0; i <=100; i+=10) {
					//设置通知的进度条
					builder.setProgress(100, i, false);
					//发送通知
					manager.notify(2, builder.build());
					try {
						Thread.sleep(2000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
				//取消下载的通知
				manager.cancel(2);
				
				builder = new NotificationCompat.Builder(MainActivity.this);
				builder.setSmallIcon(R.drawable.d_doge);
				builder.setContentTitle("下载完成");
				builder.setContentText("下载完成,点击进入安装界面");
				builder.setTicker("下载完成....");
				builder.setPriority(Notification.PRIORITY_HIGH);
				
				//发送完成通知
				manager.notify(3, builder.build());
			}
		}.start();
	}
	
	//列表通知(新闻类app经常使用的通知)
	public void notify03(View view){
		//1.获得builder对象
		NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
		builder.setSmallIcon(R.drawable.d_dahaqi).setContentTitle("今日头条");
		NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
		style.addLine("三星手机note7出现大规模爆炸事件,三星公司除中国外全面召回")
			 .addLine("30省份启动户籍改革 你们那里落户门槛有多高?")
			 .addLine("大陆对台战略改变:“区别对待”、“一岛两制”")
			 .addLine("马蓉宣布开通网络直播 网友:你怎么不去死!")
			 .setSummaryText("以上为今天推送精彩内容");
		
		//设置通知样式为列表样式
		builder.setStyle(style);
		//发送通知
		manager.notify(4, builder.build());
	}
	
	//大图通知(通常用于提供壁纸类的app)
	public void notify04(View view){
		NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
		builder.setSmallIcon(R.drawable.d_chanzui).setContentTitle("今日消息").setContentText("大量精美图片来袭!!");
		
		//实例化大图样式的对象
		NotificationCompat.BigPictureStyle style = new NotificationCompat.BigPictureStyle();
		Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.bg);
		style.bigPicture(bm);
		style.setSummaryText("可爱的阿狸");
		
		//设置通知的样式
		builder.setStyle(style);
		
		//发送通知
		manager.notify(5, builder.build());
	}
	
	
	//自定义通知(想要自定义通知格式时,使用这个)
	public void notify05(View view){
		NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
		builder.setSmallIcon(R.drawable.ic_launcher).setContentTitle("自定义通知").setContentText("丰富的表情包");
		//把布局文件转化为远程视图对象
		RemoteViews views = new RemoteViews(getPackageName(), R.layout.notification);
		//设置远程视图当中对应的控件的内容
		views.setImageViewResource(R.id.imageView1, R.drawable.ali);
		views.setTextViewText(R.id.textView1, "emoji的表情");
		
		builder.setContent(views);
		//发送通知
		manager.notify(6, builder.build());
	}
	

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值