Notification案例

案例一:基本通知实例
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

 // 点击按钮,发送通知
 public void show(View v) {
  // 创建通知的构建器
  NotificationCompat.Builder builder = new NotificationCompat.Builder(
    this);
  // 设置标题
  builder.setContentTitle("通知标题");
  // 设置通知内容
  builder.setContentText("通知内容");
  // 设置通知的额外信息
  builder.setContentInfo("额外信息");
  // 设置小图标
  builder.setSmallIcon(R.drawable.i3);
  // 设置大图标
  Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.i4);
  builder.setLargeIcon(bm);
  // 创建通知
  Notification notification = builder.build();
  // 通过系统服务,创建通知管理器
  NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  // 发送通知:参数1:通知的唯一标识,参数2:通知对象
  manager.notify(1, notification);
 }
}

案例二:
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

 // 点击按钮,发送各种通知(大文本,大图片,InBox)
 public void show(View v) {
  NotificationCompat.Builder builder = new NotificationCompat.Builder(
    this);
  builder.setSmallIcon(R.drawable.ic_launcher);
  builder.setContentTitle("通知标题");
  builder.setContentText("通知内容…………");
  builder.setContentInfo("额外信息");

  // big text
  // 创建big text样式
  // NotificationCompat.BigTextStyle style = new
  // NotificationCompat.BigTextStyle();
  // // 设置大文本
  // style.bigText("这是大文本,内容为几十万字,但是全省略了……");
  // // 设置大文本标题
  // style.setBigContentTitle("大文本标题");
  // // 设置摘要
  // style.setSummaryText("摘要");
  // 设置样式

  // big picture
  // NotificationCompat.BigPictureStyle style = new
  // NotificationCompat.BigPictureStyle();
  // Bitmap bm = BitmapFactory.decodeResource(getResources(),
  // R.drawable.android);
  // style.bigPicture(bm);

  // InBox
  NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
  for (int i = 0; i < 5; i++) {
   style.addLine("啊,大海啊,全是水!");
  }

  builder.setStyle(style);
  NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  manager.notify(2, builder.build());
 }
}
案例三:进度条通知
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

 public void show(View v) {//按钮的监听事件
  final NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  final NotificationCompat.Builder builder = new NotificationCompat.Builder(
    this);
  builder.setContentTitle("通知标题");
  builder.setSmallIcon(R.drawable.ic_launcher);
  Bitmap bm = BitmapFactory.decodeResource(getResources(),
    R.drawable.ic_launcher);
  builder.setLargeIcon(bm);
  builder.setContentInfo("额外信息");

  new Thread(new Runnable() {

   // max:表示最大的进度值
   // progress:进度条当前的进度
   // indeterminate:模糊的,不明确的,设置进度条是否精确
   @Override
   public void run() {
    // TODO Auto-generated method stub
    for (int i = 0; i < 100; i++) {
     // 更新进度条
     builder.setProgress(100, i, true);//true:表示是不精确的进度条  false:表示是精确的进度条
     // 进度条每更新一次,发送一次通知
     manager.notify(1, builder.build());
     try {
      Thread.sleep(50);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
    // 进度条更新完毕,设置进度为0
    builder.setProgress(0, 0, false);
    builder.setContentText("下载完毕!");
    manager.notify(1, builder.build());
   }
  }).start();

 }
}
案例四:点击通知跳转到另一个目标界面
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

 public void show(View v) {
  NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  NotificationCompat.Builder builder = new NotificationCompat.Builder(
    this);

  builder.setSmallIcon(R.drawable.ic_launcher);
  builder.setTicker("短暂显示一下的提示性文字");

  Intent intent = new Intent(MainActivity.this, TargetActivity.class);
  // 延迟意图,对intent的封装
  // context:上下文
  // requestCode:请求码,1
  // intent:指明页面的跳转
  // flags:标识符,
  // FLAG_ONE_SHOT:表示返回的PendingIntent只执行一次,执行之后自动取消
  // FLAG_NO_CREATE:如果PengdingIntent不存在,并不创建,返回null
  // FLAG_CANCEL_CURRENT,如果PengdingIntent存在, 将其取消,创建新的PengdingIntent
  // 有利于数据保持最新的,可以使用在即时聊天的通信场景
  // FLAG_UPDATE_CURRENT,更新当前的PengdingIntent
  PendingIntent pIntent = PendingIntent.getActivity(this, 1, intent,
    PendingIntent.FLAG_ONE_SHOT);
  builder.setContentIntent(pIntent);

  manager.notify(1, builder.build());
 }
}
目标界面:
public class TargetActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_target);
  NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  manager.cancel(1);
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.target, menu);
  return true;
 }

}
案例五:自定义通知的界面
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

 public void show(View v) {
  NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  NotificationCompat.Builder builder = new NotificationCompat.Builder(
    this);
  builder.setSmallIcon(R.drawable.ic_launcher);

  Intent intent = new Intent(MainActivity.this, MusicActivity.class);
  PendingIntent pIntent = PendingIntent.getActivity(this, 1, intent,
    PendingIntent.FLAG_ONE_SHOT);

  // 包名
  // 布局文件的id
  RemoteViews views = new RemoteViews(getPackageName(),
    R.layout.customview);//自定义的通知的布局
  // 触发延迟意图的点击事件
  // viewId,触发点击事件的控件的id
  // 延迟意图
  views.setOnClickPendingIntent(R.id.play, pIntent);//给自定义view中的控件添加监听事件
  builder.setContent(views);

  manager.notify(1, builder.build());
 }
}
目标界面:
public class MusicActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_music);
  NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  manager.cancel(1);
 }

}


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值