Notification使用
Notification是Android中当应用程序在后台运行时,借助通知就可以在手机最上方显示一个通知的图标,下拉状态栏就可以看到详细内容。
基本概念
通知还是比较灵活的,可以在活动中创建,也可以在服务和广播中创建,但是通知通常是在程序在后台运行时调用。总体来说,创建和使用用法都是相同的。
详细步骤
- 创建NotificationManager来对通知进行管理,通过调用getSystemService(NOTIFICATION_SERVICE)来获得NotificationManager实例;
- 在Android8.0以后要对版本进行适配;
- 使用NotificationCompat设置标题 内容 图片等属性;
- 调用通知管理类的notify()方法弹出通知栏;
实例
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_notification;
//创建通知管理器
private NotificationManager notificationManager;
//通知渠道的id
private String channelId="music";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//获取通知管理器对象
notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//Android8.0以上的适配
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O) {
//创建通知渠道实例(这三个参数是必须要有的)
NotificationChannel channel = new NotificationChannel(channelId,"音乐消息",NotificationManager.IMPORTANCE_DEFAULT);
//创建通知渠道的通知管理器
NotificationManager manager =(NotificationManager)getSystemService(NotificationManager.class);
//将实例交给管理器
manager.createNotificationChannel(channel);
}
btn_notification =findViewById(R.id.btn_notification);
onClickListener();
}
private void onClickListener() {
btn_notification.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_notification:
//创建notification对象,设置相应属性
Notification notification = new NotificationCompat.Builder(this,channelId)
.setContentTitle("这是标题")
.setContentText("这是内容")
.setWhen(System.currentTimeMillis())
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.android))
.setSmallIcon(R.mipmap.apple)
.build();
//调用管理器的notify方法
notificationManager.notify(1,notification);
}
}
}