NotificationUtils 对于各个版本的通知栏工具类

package com.hexie.framework.util;


import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;


import com.hexie.framework.R;


import java.util.UUID;




/**
 * Created by daxiong on 2015/8/7.
 */
@SuppressWarnings("all")
public class NotificationUtils  {


    /**
     * 优选版本通知发送
     * @param context
     * @param intent
     * @param icon
     * @param title 设置通知栏标题
     * @param text
     * @param nunber 设置通知集合的数量
     * @param notification_flag
     */
    public static void send(Context context ,Intent intent,int icon,String title, String text ,int nunber,int notification_flag){
        NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        int sdkInt = Build.VERSION.SDK_INT;
        L.i("notification", "sdkInt:" + sdkInt);
        if (sdkInt >= 16){
            PendingIntent pendingIntent16 = PendingIntent.getActivity(context, UUID.randomUUID().hashCode(),
                    intent , 0);
            // 通过Notification.Builder来创建通知,注意API Level
            // API16之后才支持
            Notification notify16 = new Notification.Builder(context)
                    .setSmallIcon(icon)
                    .setTicker(text)
                    .setContentTitle(title)
                    .setContentText(text)
                    .setPriority(Notification.PRIORITY_MAX) //设置该通知优先级
                    .setContentIntent(pendingIntent16)
                    .setNumber(nunber)
                    .build(); // 需要注意build()是在API
            // level16及之后增加的,API11可以使用getNotificatin()来替代
            notify16.flags |= Notification.FLAG_AUTO_CANCEL; // FLAG_AUTO_CANCEL表明当通知被用户点击时,通知将被清除。
            manager.notify(notification_flag, notify16);// 步骤4:通过通知管理器来发起通知。如果id不同,则每click,在status哪里增加一个提示


        }else if (sdkInt < 16 && sdkInt >= 11){
            PendingIntent pendingIntent11 = PendingIntent.getActivity(context, UUID.randomUUID().hashCode(),
                    intent, 0);
            // 通过Notification.Builder来创建通知,注意API Level
            // API11之后才支持
            Notification notify11 = new Notification.Builder(context)
                    .setSmallIcon(icon) // 设置状态栏中的小图片,尺寸一般建议在24×24,这个图片同样也是在下拉状态栏中所显示,如果在那里需要更换更大的图片,可以使用setLargeIcon(Bitmap
                            // icon)
                    .setTicker(text)// 设置在status
                            // bar上显示的提示文字
                    .setContentTitle(title)// 设置在下拉status
                            // bar后Activity,本例子中的NotififyMessage的TextView中显示的标题
                    .setContentText(text)// TextView中显示的详细内容
                    .setContentIntent(pendingIntent11) // 关联PendingIntent
                    .setNumber(nunber) // 在TextView的右方显示的数字,可放大图片看,在最右侧。这个number同时也起到一个序列号的左右,如果多个触发多个通知(同一ID),可以指定显示哪一个。
                    .getNotification(); // 需要注意build()是在API level
            // 16及之后增加的,在API11中可以使用getNotificatin()来代替
            notify11.flags |= Notification.FLAG_AUTO_CANCEL;
            manager.notify(notification_flag, notify11);
        }else {//已废弃,不过兼容所有版本的通知
            // 在Android进行通知处理,首先需要重系统哪里获得通知管理器NotificationManager,它是一个系统Service。


            // 创建一个PendingIntent,和Intent类似,不同的是由于不是马上调用,需要在下拉状态条出发的activity,所以采用的是PendingIntent,即点击Notification跳转启动到哪个Activity
            PendingIntent pendingIntent = PendingIntent.getActivity(context, UUID.randomUUID().hashCode(),
                    intent, 0);
            // 下面需兼容Android 2.x版本是的处理方式
            Notification notify1 = new Notification();
            notify1.icon = icon;
            notify1.tickerText = text;
            notify1.when = System.currentTimeMillis();
            notify1.setLatestEventInfo(context, title,
                    text, pendingIntent);
            notify1.number = nunber;
            notify1.flags |= Notification.FLAG_AUTO_CANCEL; // FLAG_AUTO_CANCEL表明当通知被用户点击时,通知将被清除。
            // 通过通知管理器来发起通知。如果id不同,则每click,在statubar那里增加一个提示
            manager.notify(notification_flag, notify1);
        }




    }
}

你可能感兴趣的:(NotificationUtils 对于各个版本的通知栏工具类)