您的位置:首页 > 移动开发 > Android开发

Android通知 ---- Notification

2016-09-23 21:02 253 查看
通知【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());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: