android 中的通知

 通知

两种通知方式:

1、  Toast

2、   Status Bar Notification

 

一、Toast

/**
  * Toast 事例
  * API文档中写道:
  * Note: Do not use the public constructor for a Toast unless you are going to define the layout with setView(View).
  * If you do not have a custom layout to use, you must use makeText(Context,int, int) to create the Toast.
  * 翻译:不要使用Toast的构造函数创建对象,除非你准备用setView定义布局
  * 如果你没有一个自定义的布局使用,你必须用makeTest(Context, int,int)创建一个Toast
  */
    privatevoid toastTest() {
        Toast toast = Toast.makeText(this,"test", Toast.LENGTH_LONG);
//        Toast toast = new Toast(this); //这样是错的
        toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
        toast.show();
}

 

/**
  * 自定义Toast 事例
  * API文档中写道:
  * Note: Do not use the public constructor for a Toast unless you are going to define the layout with setView(View).
  * If you do not have a custom layout to use, you must use makeText(Context,int, int) to create the Toast.
  * 翻译:不要使用Toast的构造函数创建对象,除非你准备用setView定义布局
  * 如果你没有一个自定义的布局使用,你必须用makeTest(Context, int,int)创建一个Toast
  */
    privatevoid customToastTest() {
        //用getLayoutInflater()或者(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE)得到LayoutInflater对象,如下面两行
        //   LayoutInflater li = getLayoutInflater();
        LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = li.inflate(R.layout.toast_layout,null);
        Toast toast = new Toast(this);
       // Toast toast = Toast.makeText(this, "test", Toast.LENGTH_LONG);
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(layout);
        toast.show();
}

二、notification

privatevoid notificationTest() {
        // 1、得到一个NotivicationManager对象
        NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        // 2、实例化Notification
        int icon = R.drawable.ic_launcher;
        CharSequence tickerText ="Hello";
        long when = System.currentTimeMillis();
       // Notification notification = new Notification();
        Notification.Builder nb =new Notification.Builder(this);
        nb.setSmallIcon(icon);
        nb.setTicker(tickerText);
        nb.setWhen(when);
//        Notification noti = nb.getNotification();
        //定义notification的消息和PendingIntent
        nb.setContentText("Hello world!");
        nb.setContentTitle("My notification");
        Intent notificationIntent =new Intent(this, IntentToActivity.class);
//        Bundle b = new Bundle();
        finalint HELLO_ID = 1;
//        b.putInt("id", HELLO_ID);
//        b.putSerializable("a", (Serializable)nm);
//        notificationIntent.putExtra("aa", b);
        PendingIntent pd = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        nb.setContentIntent(pd);
       
        Notification noti = nb.getNotification();
        //把 Notification传到NotificationManager中
       
        nm.notify(HELLO_ID, noti);
        // 由于调用notify后,通知栏中有通知了,但点击通知后,通知不消失
        //  目前打算点击通知栏中的通知后让通知消失,于是做了一下操作
        //下面两行是将通知的id和NotificationManager对象传到启动的
       // activity(IntentToActivity.class,在此类中定义了两个变量:
       // private static NotificationManager nm;和private static int id;,//并且提供了setter,getter方法对外暴力接口)中,然后在
       // IntentToActivity.class中的oncreate方法中调用nm.cancel(id);用//来取消通知栏中的通知
        IntentToActivity.setId(HELLO_ID);
        IntentToActivity.setNm(nm);
}

注意:文档中写道,Notification notification = new Notification(icon, tickerText, when);

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

都已经过时,建议用Notification.Builder

你可能感兴趣的:(android 中的通知)