android通知栏的消息通知(Notification)

转载请注明出处:

http://blog.csdn.net/xiaohao0724/article/details/63682146

在开发中经常会用到推送给用户通知、消息等的情况,今天就跟大家一起来学习推送消息时通知栏的通知Notification。

通知栏消息通知的使用步骤

一般可以分为以下步骤:
1. 首先需要一个NotificationManager对通知进行管理
2. 为了兼容低版本使用v4包中的NotificationCompat类的构造器来build Notification对象
3. 在build同时可以添加Notification的标题、内容、时间、图片等通知参数和内容
4. 创建点击通知时要跳转的页面
5. 获取要跳转页面的PendingIntent对象,并在build Notification对象时关联
6. NotificationManager notify发送消息通知

下面就带大家来实现通知栏消息Notification,先上图如下:

此图是运行在Android4.2.2手机上,不同版本可能会有差异

使用通知代码实现

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.noamal).setOnClickListener(this);
        findViewById(R.id.word).setOnClickListener(this);
        findViewById(R.id.picture).setOnClickListener(this);
    }

    void notification(int type) {
        Notification notification;
        Intent intent = new Intent(this, NotificationDetailsActivity.class);
        //点击通知栏消息跳转页
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

        //创建通知消息管理类
        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)//创建通知消息实例
                .setContentTitle("我是标题")
                .setContentText("我是内容")
                .setWhen(System.currentTimeMillis())//通知栏显示时间
                .setSmallIcon(R.mipmap.ic_launcher)//通知栏小图标
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.icon))//通知栏下拉是图标
                .setContentIntent(pendingIntent)//关联点击通知栏跳转页面
                .setPriority(NotificationCompat.PRIORITY_MAX)//设置通知消息优先级
                .setAutoCancel(true)//设置点击通知栏消息后,通知消息自动消失
//                .setSound(Uri.fromFile(new File("/system/MP3/music.mp3"))) //通知栏消息提示音
//                .setVibrate(new long[]{0, 1000, 1000, 1000}) //通知栏消息震动
//                .setLights(Color.GREEN, 1000, 2000) //通知栏消息闪灯(亮一秒间隔两秒再亮)
                .setDefaults(NotificationCompat.DEFAULT_ALL); //通知栏提示音、震动、闪灯等都设置为默认

        switch (type) {
            case 1:
                notification = builder.build();
                //id为通知栏消息标识符,每个id都是不同的
                manager.notify(Constant.NOAMAL, notification);
                break;
            case 2:
                notification = builder.setStyle(new NotificationCompat.BigTextStyle().bigText("我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容,我是长文字内容"))
                        .build();
                manager.notify(Constant.WORD, notification);
                break;
            case 3:
                notification = builder.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(), R.mipmap.big)))
                        .build();
                manager.notify(Constant.PICTURE, notification);
                break;
            default:
                break;
        }

    }


    @Override
    public void onClick(View v) {

        switch (v.getId()) {

            case R.id.noamal:
                notification(1);
                break;
            case R.id.word:
                notification(2);
                break;
            case R.id.picture:
                notification(3);
                break;

        }
    }
}

点击通知栏跳转到的页面

public class NotificationDetailsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textView = new TextView(this);
        textView.setText("我是通知详情页");
        setContentView(textView);
//        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        //当点击通知消息跳转到详情页时根据通知消息的id关闭通知栏的显示
//                manager.cancel(Constant.NOAMAL);
//                manager.cancel(Constant.WORD);
//                manager.cancel(Constant.PICTURE);

    }

}

发送消息通知的id

public class Constant {

    public static int NOAMAL = 1;
    public static int WORD = 2;
    public static int PICTURE = 3;
}

点击下载源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值