Android 通知栏的使用

本文介绍如何在Android中创建和管理通知栏,包括使用NotificationManager、NotificationCompat.Builder等组件,实现通知内容设置、点击事件响应及通知取消等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在看《第一行代码》的时候,学到通知栏这一块内容,发现书上的内容已经过时了,使用的方法已经被android摒弃了。于是上网找资料,再结合书上部分还没过时的内容,学习了一下android通知栏的内容。

使用步骤

第一步:创建一个NotificationManager来对所有的通知进行管理

第二步:创建一个通知栏的Builder构造类

第三步:通过对builder对象对通知栏进行设置

第四步:显示通知

详细使用步骤

<span style="white-space:pre">		</span>//第一步创建一个NotificationManager来对所有的通知进行管理 
		NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
		//第二步创建一个通知栏Builder构造类
                NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this);
		//第三步通过builder对象对通知栏进行设置
                mBuilder.setContentTitle("通知标题")//设置通知栏的标题
                        .setContentText("通知内容")//设置通知栏的内容
                        .setTicker("通知来了")//设置下拉栏没有下拉时显示的提示,就是会向上滚动显示的内容
                        .setWhen(System.currentTimeMillis())//设置通知栏的显示时间
                        .setPriority(Notification.PRIORITY_DEFAULT)//设置通知栏的优先级,设置为默认的
                        .setDefaults(Notification.DEFAULT_VIBRATE)//设置通知为默认的震动、声音、闪灯模式
                        .setSmallIcon(R.drawable.back);//设置提示的内容的图标
		//显示通知 第一个参数是通知的id号
                manager.notify(1,mBuilder.build());


效果如下图所示




通知栏出现之后就可以进一步学习对于通知栏的点击事件的使用了,因为发现这时候点击通知栏的通知没有任何的效果,平时我们遇到的通知栏点击之后就会转到相应的应用。对通知栏的点击事件的设置可以在第三步的过程中,使用setContentIntent(pendingIntent)函数,通过传递一个PendingIntent类型的参数来设置。

PendingIntent和Intent差不多,都是表明一个“意图”,可以通过使用intent对象来构造PendingIntent对象,所以上面的代码变成

<span style="white-space:pre">		</span>NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
                NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this);
                Intent intent = new Intent(MainActivity.this,NewsMainActivity.class);
		//构造了一个表示从当前活动转向NewsMainActivity的一个PendingIntent
                PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,intent,0);
                mBuilder.setContentTitle("通知标题")
                        .setContentText("通知内容")
                        .setContentIntent(pendingIntent)
                        .setTicker("通知来了")
                        .setWhen(System.currentTimeMillis())
                        .setPriority(Notification.PRIORITY_DEFAULT)
                        .setDefaults(Notification.DEFAULT_VIBRATE)
                        .setSmallIcon(R.drawable.back);
                manager.notify(1,mBuilder.build());


最后是对通知栏的通知图标的取消,因为发现在点击通知之后,页面虽然跳转了,但是通知图标依然存在。可以在跳转到新的页面之后调用NotificationManager对象的cancel函数,传入一个通知栏id的参数,对相应的id对应的通知取消掉。通知栏的id就是在第四步

manager.notify(1,mBuilder.build());

中第一个参数指定的id号。

点击通知栏之后,跳转到了NewsMainActivity活动页面,所在NewsMainActivity的onCreate函数中对通知进行取消

public class NewsMainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_news_main);
        NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        manager.cancel(1);
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值