public class MainActivity extends AppCompatActivity implements View.OnClickListener { private int i = 0; /** * */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn_send_notification).setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_send_notification: //弹出一条notification sendNotification(); break; } } //发送一条通知的方法 private void sendNotification() { //第一步获得NotificationManager对象 //通过调用getSystemService方法,这个方法可以获得系统的一些服务对象 //参数是Context.NOTIFICATION_SERVICE NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //第二步 创建出一个Builder对象 类似于dialog的Builder对象 专门用来对Notification进行设定 Notification.Builder builder = new Notification.Builder(this); //设置小图标 builder.setSmallIcon(R.mipmap.ic_launcher); //设置标题 builder.setContentTitle("来电话啦"); //设置内容 builder.setContentText("刘德华来电"); //设置时间 调用系统的时间 builder.setNumber(i++);//设置Notification的条数 builder.setWhen(System.currentTimeMillis()); //notification点击跳转 TODO 还没写完 Intent intent = new Intent(this,MainActivity.class); //pendingIntent 代表延迟意图的意思,不知道什么时候会执行 放在Notification中是为了点击的时候实现意图 //第一个参数,Context,第二个参数 返回码,第三个参数intent, 第四个参数代表pendingIntent执行一次后就失效 //例如要启动一个Activity 就用getActivity的方法 主要用PendingIntent的get方法 //因为pendingIntent的参数中context对象 所有才能在任何时间进行跳转 PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT); //设置PendingIntent给notification builder.setContentIntent(pendingIntent); //第三步 创建除Notification 通过Builder对象的build()方法创建除Notification //builder.build()方法是 API16之后使用的 //builder.getNotification 使用的是API 11-16使用的 Notification notification = builder.build(); //通过设置flags属性, 让notification点击一次就消失 notification.flags = Notification.FLAG_AUTO_CANCEL; //第四步 将notification显示出来 //通过manage的notify方法 显示出设定好的notification //接收两个参数,第一个参数是ID 相同ID的会被系统认为是同一个Notification //第二个参数为创建好的Notification // int i = 0; manager.notify(0,notification); }
}