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

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

直接上代码:

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通知栏显示通知简单使用)