美文网首页Android工具集
Android消息通知Notification学习笔记

Android消息通知Notification学习笔记

作者: Small_Cake | 来源:发表于2019-07-05 09:53 被阅读1次
1.创建通知,并显示
    /**
     *  简易通知显示
     *  必要三元素:smallIcon,contentTitle,contentText
     */
    public static void showNotice(Context context, CharSequence msg){
            NotificationManager manager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
            NotificationCompat.Builder builder;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationChannel channel = new NotificationChannel("渠道ID", "优惠券商品", NotificationManager.IMPORTANCE_LOW);
                manager.createNotificationChannel(channel);
                builder = new NotificationCompat.Builder(context, "渠道ID");
            }else {
                builder = new NotificationCompat.Builder(context);
            }
            Notification notification = builder
                    .setSmallIcon(android.R.drawable.sym_def_app_icon)
                    .setContentTitle(context.getString(R.string.app_name))
                    .setContentText(msg)
                    .build();
            notification.flags = Notification.FLAG_AUTO_CANCEL;
            manager.notify(0,notification);
    }
  • 注意:Android8.0及以上系统版本
    a.一定要设置通知渠道
    b.且new NotificationChannel("渠道ID"这里的渠道ID和下面的new NotificationCompat.Builder(this, "渠道ID")中的渠道ID要相同
2.点击通知,跳转到主页面
private void showNotice(Context context,String msg){
        NotificationManager manager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder builder;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel("渠道ID", "优惠券商品", NotificationManager.IMPORTANCE_LOW);
            manager.createNotificationChannel(channel);
            builder = new NotificationCompat.Builder(context, "渠道ID");
        }else {
            builder = new NotificationCompat.Builder(context);
        }
        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0,  intent, PendingIntent.FLAG_CANCEL_CURRENT);
        Notification notification = builder
                .setSmallIcon(R.mipmap.logo)
                .setContentTitle("我是一个标题")
                .setContentText(msg)
                .setContentIntent(contentIntent)
                .build();
        notification.flags = Notification.FLAG_AUTO_CANCEL;
        manager.notify(0,notification);
    }
3.点击通知,打开多个页面
 private void showNotice(Context context,String msg){
        NotificationManager manager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder builder;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel("渠道ID", "优惠券商品", NotificationManager.IMPORTANCE_LOW);
            manager.createNotificationChannel(channel);
            builder = new NotificationCompat.Builder(context, "渠道ID");
        }else {
            builder = new NotificationCompat.Builder(context);
        }
        PendingIntent contentIntent = PendingIntent.getActivities(getApplicationContext(), 0,  makeIntentStack(context), PendingIntent.FLAG_CANCEL_CURRENT);
        Notification notification = builder
                .setSmallIcon(R.mipmap.logo)
                .setContentTitle("我是一个标题")
                .setContentText(msg)
                .setContentIntent(contentIntent)
                .build();
        notification.flags = Notification.FLAG_AUTO_CANCEL;
        manager.notify(0,notification);
    }
    Intent[] makeIntentStack(Context context) {
        Intent[] intents = new Intent[2];
        intents[0] = Intent.makeRestartActivityTask(new ComponentName(context, MainActivity.class));
        intents[1] = new Intent(context, WhiteBarActivity.class);
        return intents;
    }

  • 这三种方式,第二种应该是使用场景最多的。

参考:Notification点击跳转指定的Activity

其实也可以用AndroidStudio创建一个Notification,只需修改部分参数即可

相关文章

网友评论

    本文标题:Android消息通知Notification学习笔记

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