非常简单的一个通知栏工具类,用在项目中需要修改下。平时没事写个demo用还可以。实现了最新android8.0通知栏方式

import android.app.NotificationChannel;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.ContextWrapper;import android.content.Intent;import android.os.Build;import android.support.v4.app.NotificationCompat;import android.support.v4.app.NotificationManagerCompat;public class NotificationUtils extends ContextWrapper {    private int notifyId = 1;    private String channelId = "1";    private int smallIcon;    private String title;    private String content;    private NotificationCompat.Builder builder;    private NotificationManager notificationManager;    private NotificationManagerCompat notificationManagerCompat;    public NotificationUtils(Context context, int smallIcon, String title, String content) {        this(context, 1, null, smallIcon, title, content);    }    public NotificationUtils(Context context, int notifyId, int smallIcon, String title, String content) {        this(context, notifyId, null, smallIcon, title, content);    }    public NotificationUtils(Context context, int notifyId, String channelId, int smallIcon, String title, String content) {        super(context);        this.notifyId = notifyId;        this.channelId = channelId != null ? channelId : this.notifyId+"";        this.smallIcon = smallIcon;        this.title = title;        this.content = content;        baseNotification();    }    public void notifyProgress(int max, int progress, String title, String content) {        if (builder != null && progress > 0) {            builder.setContentTitle(title);            builder.setContentText(content);            builder.setProgress(max, progress, false);            notify();        }    }    public void completeProgress(String title, String content) {        notifyProgress(0, 0, title, content);    }    public void notifyed() {        notify(builder);    }    public void notify(Intent intent) {        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);        notify(builder.setContentIntent(pendingIntent));    }    private void notify(NotificationCompat.Builder builder) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {            getNotificationManager();            notificationManager.notify(notifyId, builder.build());        } else {            getNotificationManagerCompat();            notificationManagerCompat.notify(notifyId, builder.build());        }    }    public void cancel(int notifyId) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {            notificationManager.cancel(notifyId);        } else {            notificationManagerCompat.cancel(notifyId);        }    }    private void baseNotification() {        builder = getBuilder(getApplicationContext(), channelId);        builder.setSmallIcon(smallIcon);        builder.setContentTitle(title);        builder.setContentText(content);    }    private NotificationCompat.Builder getBuilder(Context context, String channelId) {        return (builder = new NotificationCompat.Builder(context, channelId));    }    private NotificationCompat.Builder getBuilder(Context context) {        return (builder = new NotificationCompat.Builder(context));    }    private void getNotificationManagerCompat() {        notificationManagerCompat = NotificationManagerCompat.from(getApplicationContext());    }    private void getNotificationManager() {        notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);        int importance = NotificationManager.IMPORTANCE_DEFAULT;        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {            NotificationChannel channel = new NotificationChannel(channelId, "channel_name", importance);            notificationManager.createNotificationChannel(channel);        }    }    public NotificationManager getManager() {        return this.notificationManager;    }    public NotificationCompat.Builder getBuilder() {        return builder;    }}

使用方法:

//普通通知栏消息NotificationUtils notificationUtils = new NotificationUtils(this, R.mipmap.ic_launcher, "title", "content......");notificationUtils.notifyed();//notificationUtils.cancel(1);//进度通知栏notificationUtils.notifyProgress(100, progress += 10, "正在下载", progress + "%");notificationUtils.completeProgress("下载完成","下载完成!");

更多相关文章

  1. Android之MVC——Model通知View去更新(实用)
  2. Frame-By-Frame Animations的使用方法
  3. Android通知Header详解
  4. Android GoogleMap的放大缩小地图控件的使用方法
  5. Android的Gson的使用方法,实现Json结构间相互转换
  6. 26. android Notification 状态栏通知
  7. TabHost的基本使用方法
  8. Android中添加常驻通知栏
  9. Android 自定义通知Notification 适配不同背景颜色

随机推荐

  1. Android简介
  2. 【Android进阶】android:configChanges属
  3. 很实用的android压缩图片的算法
  4. Android(安卓)popupWindow响应back按键并
  5. Android 4.4 KitKat 支持 u 盘功能
  6. Android获得SD卡剩余容量的源码
  7. android中layout_gravity 和 gravity的区
  8. Android项目运行提示
  9. android 实现静默安装、卸载(图)
  10. android studio单元测试