美文网首页
Android通知栏显示通知简单使用

Android通知栏显示通知简单使用

作者: itkluo88 | 来源:发表于2018-05-16 15:07 被阅读844次

    最近做直播,要求向关注者发通知,显示在通知栏, 记录下简单的使用。 并发现一个在魅族手机上奇葩的坑。。。

    直接上代码:

    private void notifyLiveStart(Activity context, PendingIntent intent, int id, String contentText, String tickerText) {

    NotificationChannel channel =null;

            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {

    channel =new NotificationChannel("1",

                        "Channel1", NotificationManager.IMPORTANCE_DEFAULT);

                channel.enableLights(true); //是否在桌面icon右上角展示小红点

                channel.setLightColor(Color.RED); //小红点颜色

                channel.setShowBadge(true); //是否在久按桌面图标时显示此渠道的通知

            }

    NotificationCompat.Builder build =new NotificationCompat.Builder(context, "default");

            build.setContentTitle("测试标题");//设置通知栏标题

            build.setContentText(contentText); //设置通知栏显示内容

            //build.setNumber(3); //设置通知集合的数量

            build.setTicker(tickerText); //通知首次出现在通知栏,带上升动画效果的

            build.setWhen(System.currentTimeMillis());//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间

            build.setPriority(Notification.PRIORITY_DEFAULT); //设置该通知优先级

            build.setAutoCancel(true);//设置这个标志当用户单击面板就可以让通知将自动取消

            build.setOngoing(false);//ture,设置他为一个正在进行的通知,通常是用来表示一个后台任务,以某种方式正在等待,如一个文件下载,同步操作

            build.setDefaults(Notification.DEFAULT_VIBRATE);//向通知添加声音、闪灯和振动效果

            build.setSmallIcon(R.drawable.app_logo);//设置通知小ICON

            build.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.app_logo));

            build.setContentIntent(intent); //设置通知栏点击意图

            Notification mNotification = build.build();

            notificationManager.notify(id, mNotification);

        }

    public PendingIntent getContentIntent(Activity context, int id) {

    Intent intent =new Intent(this, NoticeActivty.class);

        return PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    }

    getContentIntent()方法为点击通知时执行的意图,这里跳转到一个activity。

    现在开始弹出通知:

    notifcationManage = (NoificationManager) getSystemService(NOTIFICATION_SERVICE);:

    int id = (int) System.currentTimeMillis();

    PendingIntent clickIntent = getContentIntent(MainActivity.this, id);

    notifyLiveStart(MainActivity.this, clickIntent, id, "您关注的主播开播啦!", "有新的通知");

    哈哈,就这么使用~~~ 

    但坑来了, 当我用魅族pro6试怎么弹不出来~~

    机型适配嘛,Android程序员懂得,网上一股搜索,也没下文。。。

    后来无意发现问题出在传的通知内容“您关注的主播开播啦!”, 去掉感叹号就好了。。

    魅族的, 不能有叹号啊,不能有叹号啊,不能有叹号啊。。。。。

    捉鸡的,魅族系统bug!根据系统判断,替换掉感叹号:

    if (SystemUtil.isMeizuFlymeOS(context)) {//魅族的, 不能有叹号啊,不能有叹号啊,不能有叹号啊https://bbs.meizu.cn/thread-6833068-1-1.html

        contentText = contentText.replace("!", ".");

        contentText = contentText.replace("!", "。");

    }

    SystemUtil自定义的工具类,用于判断当前手机系统,这在网上直接找就好了!

    好了,这下解决!

    不过遇到在华为p10弹不出通知,就不知道为什么了。。有知道的告诉我下

    (这问题已解决,  请看解决在Android 8.0无法显示通知 - 简书)

    相关文章

      网友评论

          本文标题:Android通知栏显示通知简单使用

          本文链接:https://www.haomeiwen.com/subject/ptkccxtx.html