Notification:通知栏信息提醒。
分两大步:
一、创建一个通知
普通的属性:通知声音,点击通知框后是否自动取消
1、通知栏:通知栏就是手机屏幕最上方来消息时提醒出现的,包括Image、Text
2、通知框:手机屏幕从最上方往下拉后出现通知框,包括:Image、Text、Time... (可以自定义布局)
最重要的是其中包括的一个:延迟Intent(意图)
先手打一遍:
//构建通知构建器,Context:上下文,MainActivity.this
Notification.Builder builder = new Notification.Builder(MainActivity.this);
//构建器的一些基本属性
//点击通知框后,是否自动取消通知框
builder.setAutoCancel(true);
//设置通知声音提醒,默认系统提供的声音
builder.setDefaults(Notification.DEFAULT_SOUND);
//设置通知栏的图片
builder.setSmailIcon(R.drawable....);
//设置通知栏的滚屏文字
builder.setTicker("班级通知");
//设置通知的时间
builder.setWhen(System.CurrentTimeMillis());
//设置通知框的标题跟内容,图片跟通知栏中的一样
builder.setContentTitle("班级通知");
bulider.setContentText("停电通知,昨天停电");
//设置通知框时可以自定义通知框的布局。
//远程视图,
RemoteViews remoteviews = new RemoteViews(getPackageName(), R.layout.notification);
//可以动态设置布局中TextView中的值,
remoteviews.setTextViewText(R.id.tv_notification, "班级来通知了。。。。");
builder.setContent(remoteviews);
//设置好了通知栏和通知框后,在通知框上加入Intent,延迟意图,PendingIntent :意思是点击了通知框之后,进入到另外的组件
//准备一个打电话的Intent,需要设置权限
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:110"));
//context:上下文、 requestCode:请求码 intent:意图,当点击通知框后要进入的组件,所以要提前准备好一个Intent, flags:FLAG_UPDATE_CURRENT更新当前通知状态,
pendingIntent pendingIntent = new PendingIntent(MainActivity.this, 0, intent, FLAG_UPDATE_CURRENT);
//将创建好的延迟意图加入到构建器中
builder.setContentIntent(pendingIntent);
//构建器设置完成,真正的构建一个通知
Notification notification = builder.getNotification();
二 、发通知,
1、通过Context获取通知管理器服务,创建通知管理器NotificationManager
NotificationManager manager = getSystemService(Context.NOTIFICATION_SERVICE);
2、NotifivationManager发通知
manager.notify(1,notification);
通过截图来看:
自定义通知框的代码及效果图
写完之后的效果图:
点击通知,通知栏的提示效果图:
往下拉通知栏,通知框的效果图如下