1. Android 8.0 系统通知栏适配
NotificationChannel
是android8.0新增的特性,如果App的targetSDKVersion>=26
,没有设置channel通知渠道的话,就会导致通知无法展示。
什么是通知渠道呢?顾名思义,就是每条通知都要属于一个对应的渠道。每个App都可以自由地创建当前App拥有哪些通知渠道,但是这些通知渠道的控制权都是掌握在用户手上的。用户可以自由地选择这些通知渠道的重要程度,是否响铃、是否振动、或者是否要关闭这个渠道的通知。
拥有了这些控制权之后,用户就再也不用害怕那些垃圾推送消息的打扰了,因为用户可以自主地选择自己关心哪些通知、不关心哪些通知。例如高德地图,你只想收到骑行提醒、个人消息提醒,不想收到运营活动提醒等,可以创建相应的通知渠道,将运营互动通知渠道关闭,则既可以接收到关心的通知,又不会接收到那些我不关心的通知。对于App来说,通知渠道划分需仔细考究,一旦创建就不能再修改。
1.1 创建通知渠道
如果你的项目targetSdkVersion指定到了26或者更高,则必须要对Notification进行适配。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "chat";
String channelName = "聊天消息";
int importance = NotificationManager.IMPORTANCE_HIGH;
createNotificationChannel(channelId, channelName, importance);
channelId = "subscribe";
channelName = "订阅消息";
importance = NotificationManager.IMPORTANCE_DEFAULT;
createNotificationChannel(channelId, channelName, importance);
}
}
@TargetApi(Build.VERSION_CODES.O)
private void createNotificationChannel(String channelId, String channelName, int importance) {
NotificationChannel channel = new NotificationChannel(