Notification
来源:互联网 发布:快手免费刷播放软件 编辑:程序博客网 时间:2024/06/06 03:00
创建通知的步骤,首先通过NotificationManager来对通知进行管理,可以调用Context的getSystemService()方法获取到。这个方法的参数用于确定获取系统的那个服务。
所以获取NotificationManager的实例就可以写成:
NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
获取Notificatio的实例可以写成:
Notification nofitication=new NotificationCompat.Builder(this) .setContentTitle("第一个通知") .setSmallIcon(R.mipmap.ic_launcher)//设置小图标 .setContentText("看通知,请看正文,看看")//设置通知正文 .setWhen(System.currentTimeMillis())//显示时间 .setAutoCancel(true)//关闭通知 .build();//build方法得到一个通知 manager.notify(0,nofitication);
通过NotificationCompat类的Builder()方法得到一个Builder对象,再调用这个对象的.build()方法的到一个通知,然后通过NotificationManager的notify()方法让通知显示出来。notify()方法接收两个参数,第一个参数是id,要保证每个通知所指定的id都是不同的。第二个参数则是notification对象。
下面直接贴上常用几种通知的代码
package com.zp.administrator.nofiticationdemo;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.graphics.BitmapFactory;import android.graphics.Color;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.app.NotificationCompat;import android.view.View;import android.widget.Button;import android.widget.RemoteViews;import java.io.File;public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button btnNorma101;//普通通知,点击通知进入一个网站 private Button btnNorma102;//普通通知,点击通知进入一个Activity private Button btnadvace;//设置通知,铃声,震动和闪烁灯 private Button btnLongText;//设置通知显示长文本 private Button btnImage;//设置通知显示大图片 private Button btncustom;//设置自定义通知 private Button btnhang;//设置悬挂式通知 private Button btnprogress;//设置进度条通知 private NotificationManager manager;//通知管理对象,系统服务 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setViews();//初始化控件 setListeners();//设置事件监听 } private void setListeners() { btnNorma101.setOnClickListener(this); btnNorma102.setOnClickListener(this); btnadvace.setOnClickListener(this); btnLongText.setOnClickListener(this); btnImage.setOnClickListener(this); btncustom.setOnClickListener(this); btnhang.setOnClickListener(this); btnprogress.setOnClickListener(this); } private void setViews() { btnNorma101= (Button) findViewById(R.id.btn_norma101); btnNorma102= (Button) findViewById(R.id.btn_norma102); btnadvace= (Button) findViewById(R.id.btn_advance); btnLongText= (Button) findViewById(R.id.btn_langtext); btnImage= (Button) findViewById(R.id.btn_image); btncustom= (Button) findViewById(R.id.btn_custom); btnhang= (Button) findViewById(R.id.btn_hang); btnprogress= (Button) findViewById(R.id.btn_progress); //得到系统服务 manager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); } @Override public void onClick(View v) { //通过switch,判断当前到底点击的是那个按钮 switch (v.getId()){ case R.id.btn_norma101: setNotificationNorma101();//第一种通知格式 break; case R.id.btn_norma102: setNotificationNorma102();//第二种通知格式 break; case R.id.btn_advance: //设置通知到来的铃声,震动闪烁灯 setNOtificationAdvance();//设置通知的进阶技巧 break; case R.id.btn_langtext: //设置长文本通知 setNotificationLongText(); break; case R.id.btn_image: setNotificationImage(); break; case R.id.btn_custom: setCustomNotification();//设置自定义通知 break; case R.id.btn_hang: setHangNotification();//设置悬挂通知 break; case R.id.btn_progress: setProgressNotification();//设置进度条通知 break; } } private void setProgressNotification() { //直接得到Builder对象 final NotificationCompat.Builder builder=new NotificationCompat.Builder(this); builder.setAutoCancel(true); builder.setSmallIcon(R.mipmap.ic_launcher); //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)); builder.setContentTitle("第八个通知——进度条通知"); builder.setContentText("正在下载图片......"); builder.setWhen(System.currentTimeMillis()); //加入多线程 new Thread(new Runnable() { @Override public void run() { //模拟图片下载的时间 int time; for(time=0;time<=100;time+=5){ //设置进度条 builder.setProgress(100,time,false); //第一次展示进度条 manager.notify(7,builder.build()); //休眠线程 try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } //整个循环结束模拟下载结束 builder.setContentText("图片下载完成!"); manager.notify(7,builder.build());//发送通知 } }).start();//多线程启动 } private void setHangNotification() { //直接得到Builder对象 NotificationCompat.Builder builder=new NotificationCompat.Builder(this); builder.setAutoCancel(true); builder.setSmallIcon(R.mipmap.ic_launcher); //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)); builder.setContentTitle("第七个通知,悬挂式通知,不需要下拉,就能看到的通知"); builder.setContentText("无需下拉,就能看到"); builder.setWhen(System.currentTimeMillis()); //实现悬挂式通知.android5.0之后的新特性 Intent intent=new Intent(this,NotificationActivity.class); PendingIntent pending=PendingIntent.getActivity(this,0,intent,0); builder.setFullScreenIntent(pending,true); manager.notify(4,builder.build());//发送通知 } private void setCustomNotification() { //直接得到Builder对象 NotificationCompat.Builder builder=new NotificationCompat.Builder(this); builder.setAutoCancel(true); builder.setSmallIcon(R.mipmap.ic_launcher); //对于自定义通知,这设置可以省略 /*builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)); builder.setContentTitle("第六个通知,自定义通知"); builder.setContentText("我要一所大房子,面朝大海,春暖花开。"); builder.setWhen(System.currentTimeMillis());*/ //使用RemoteViews来创建自定义的通知视图 RemoteViews remote=new RemoteViews(getPackageName(),R.layout.custom_notification_view); builder.setCustomBigContentView(remote); manager.notify(5,builder.build());//发送通知 } private void setNotificationImage() { //直接得到Builder对象 NotificationCompat.Builder builder=new NotificationCompat.Builder(this); builder.setAutoCancel(true); builder.setSmallIcon(R.mipmap.ic_launcher); //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)); builder.setContentTitle("第五个通知"); builder.setContentText("通知看图片"); //设置大图片 builder.setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(BitmapFactory.decodeResource(getResources(),R.mipmap.a1))); builder.setWhen(System.currentTimeMillis()); manager.notify(4,builder.build());//发送通知 } private void setNotificationLongText() { //直接得到Builder对象 NotificationCompat.Builder builder=new NotificationCompat.Builder(this); builder.setAutoCancel(true); builder.setSmallIcon(R.mipmap.ic_launcher); //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)); builder.setContentTitle("第四个通知"); //设置通知显示长文本 builder.setStyle(new NotificationCompat.BigTextStyle().bigText("我挥舞着键盘和鼠标,发誓要把这个世界写的明明白白!" + "疯狂源自梦想,技术成就辉煌!")); builder.setWhen(System.currentTimeMillis()); manager.notify(3,builder.build());//发送通知 } private void setNOtificationAdvance() { Intent intent=new Intent(this,NotificationActivity.class); PendingIntent pIntent=PendingIntent.getActivity(this,0,intent,0); //直接得到Builder对象 NotificationCompat.Builder builder=new NotificationCompat.Builder(this); builder.setContentIntent(pIntent); builder.setAutoCancel(true); builder.setSmallIcon(R.mipmap.ic_launcher); //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)); builder.setContentTitle("第三个通知"); builder.setContentText("这个通知设置铃声、震动、闪烁灯"); //设置震动,通知到来震动1秒,停止1秒,再震动1秒 builder.setVibrate(new long[]{0,1000,1000,1000}); //设置闪烁灯,绿色灯,1秒闪,1秒灭 builder.setLights(Color.GREEN,1000,1000); //设置铃声 builder.setSound(Uri.fromFile(new File("/system/media/audio/ringtons/Bounce.ogg"))); /*//将三合一的写法,使用当前手机配置的默认值 builder.setDefaults(NotificationCompat.DEFAULT_ALL);*/ builder.setWhen(System.currentTimeMillis()); manager.notify(2,builder.build());//发送通知 } private void setNotificationNorma101() { //点击通知进入一个网站 Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com")); //延迟执行的意图,执行了上面创建的意图 PendingIntent pendIngItent=PendingIntent.getActivity(this,0,intent,0); //新建一个通知对象 Notification nofitication=new NotificationCompat.Builder(this) .setContentTitle("第一个通知") .setSmallIcon(R.mipmap.ic_launcher)//设置小图标 //.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))//设置大图标 .setContentText("看通知,请看正文,看看")//设置通知正文 .setWhen(System.currentTimeMillis())//显示时间 .setContentIntent(pendIngItent)//点击通知跳转页面 .setAutoCancel(true)//关闭通知 .build();//build方法得到一个通知 manager.notify(0,nofitication); } private void setNotificationNorma102() { Intent intent=new Intent(this,NotificationActivity.class); PendingIntent pIntent=PendingIntent.getActivity(this,0,intent,0); //直接得到Builder对象 NotificationCompat.Builder builder=new NotificationCompat.Builder(this); builder.setContentIntent(pIntent); builder.setAutoCancel(true); builder.setSmallIcon(R.mipmap.ic_launcher); //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)); builder.setContentTitle("第二个通知"); builder.setContentText("通知看正文"); builder.setWhen(System.currentTimeMillis()); manager.notify(1,builder.build());//发送通知 }}
0 0
- Notification
- Notification
- Notification
- Notification
- notification
- Notification
- Notification
- Notification
- Notification
- Notification
- Notification
- Notification
- Notification
- notification
- Notification
- Notification
- Notification
- Notification
- C语言数据结构——栈、行编辑程序
- python3 压缩备份
- RGBD相机深度图像配准(Registration)
- 中兴捧月比赛DIJKSTRA派算法说明
- 各种内部排序算法的比较和应用
- Notification
- 漫步数理统计二十八——混合分布
- Javascript中canvas绘制五子棋棋盘
- HDU5493-Queue
- poj1509:Glass Beads(后缀自动机)
- 2016搜索提高1017
- SQL中常用模糊查询的四种匹配模式&&正则匹配
- python中的range和xrange的使用和区别
- Spring4 之IOC详解xml配置