您的位置:首页 > 移动开发 > Android开发

Android 通知栏的使用

2016-01-22 20:33 369 查看
在看《第一行代码》的时候,学到通知栏这一块内容,发现书上的内容已经过时了,使用的方法已经被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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: