android 8.0 带进度条通知栏

最近工作比较繁忙,一直没抽空更新博客,
简单封装了下进度条工具类,有需要的直接拿去用,targetSdkVersion 可以指定到26
具体要定制的建议去官网看看

 public class NotificationUtils {
    private static NotificationManager manager;
    private static NotificationManager getManager() {
        if (manager == null) {
            manager = (NotificationManager) App.getInstance().getSystemService(NOTIFICATION_SERVICE);
        }
        return manager;
    }
    @RequiresApi(api = Build.VERSION_CODES.O)
    private static Notification.Builder getNotificationBuilder(String title, String content, String channelId) {
        //大于8.0
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            //id随便指定
            NotificationChannel channel = new NotificationChannel(channelId, App.getInstance().getPackageName(), NotificationManager.IMPORTANCE_DEFAULT);
            channel.canBypassDnd();//可否绕过,请勿打扰模式
            channel.enableLights(true);//闪光
            channel.setLockscreenVisibility(VISIBILITY_SECRET);//锁屏显示通知
            channel.setLightColor(Color.RED);//指定闪光是的灯光颜色
            channel.canShowBadge();//桌面laucher消息角标
            channel.enableVibration(true);//是否允许震动
            channel.setSound(null, null);
            //channel.getAudioAttributes();//获取系统通知响铃声音配置
            channel.getGroup();//获取通知渠道组
            channel.setBypassDnd(true);//设置可以绕过,请勿打扰模式
            channel.setVibrationPattern(new long[]{100, 100, 200});//震动的模式,震3次,第一次100,第二次100,第三次200毫秒
            channel.shouldShowLights();//是否会闪光
            //通知管理者创建的渠道
            getManager().createNotificationChannel(channel);

        }
        return new Notification.Builder(App.getInstance()).setAutoCancel(true).setChannelId(channelId)
                .setContentTitle(title)
                .setContentText(content).setSmallIcon(R.mipmap.ic_launcher);
    }

    @RequiresApi(api = Build.VERSION_CODES.O) 
    public static void showNotification(String title, String content, int manageId, String channelId, int progress, int maxProgress) {
        final Notification.Builder builder = getNotificationBuilder(title,content,channelId);
       /* Intent intent = new Intent(this, SecondeActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
        builder.setContentIntent(pendingIntent);*/
        builder.setOnlyAlertOnce(true);
        builder.setDefaults(Notification.FLAG_ONLY_ALERT_ONCE);
        builder.setProgress(maxProgress, progress, false);
        builder.setWhen(System.currentTimeMillis());
        getManager().notify(manageId, builder.build());
    }
    @RequiresApi(api = Build.VERSION_CODES.O)
    public static void cancleNotification(int manageId) {
        getManager().cancel(manageId);
    }
}

自行替换

public class App extends Application {
    
    private static App mApplication = null;
    public static App getInstance(){
        return myApplication;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        mApplication=this;
    }
}

有时间写篇详细的博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,513评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,116评论 2 59
  • 好久没写日记,最近几个月整天都是混混恶恶,都不知道在干什么。把时间花在无聊的事上,我都快不认识我自己了,所以我要...
    qbSally阅读 111评论 0 0
  • (七十五)正确的打开方式 (七十六)论爱情的盲目性 室韦的阿布王子,此次携使团来大唐给皇太后祝寿,最真实的意图,是...
    笔间流年阅读 277评论 2 3
  • 妈妈,那片荒凉的滩涂 来不及记住您留下的蹒跚步履 一滴来自天上的的水 已将它灌溉成一片清澈的湖 阳光下泛起丝丝涟漪...
    一叶微岚阅读 1,878评论 50 59