android 适配android 8.0时遇到的问题

来源:互联网 发布:淘宝客服主要是做什么 编辑:程序博客网 时间:2024/06/03 19:43
前几天某应用平台通知我,说我没有适配android O,让我适配之后再进行上传更新.
虽说android 8.0出了一段时间了,但毕竟常用的机型中没有,所以没有适配.也是个人漏洞

然后在Pixel XL和Nexus 6P上运行了项目,提示出:

然后看了官方文档:notification channel
以及stackoverflow:stackoverflow

这是我之前的代码:

        Notification.Builder builder = new Notification.Builder(getApplicationContext());        builder.setContentTitle("")                .setContentText("正在运行中")                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.so_logo))                .setSmallIcon(R.mipmap.so_logo)                .setOngoing(true)//设置是否是一个正在执行的通知                .setContentIntent(PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT));        // 获取构建好的Notification        Notification notification = builder.build();        //设置为前台服务,必须绑定一个notification对象,实际上也就是说如果你想做持久化的Service就得让用户知道,PID是自定义的整数表明notification的ID        startForeground(Notification_ID, notification);
然后加入了:
NotificationChannel channel = new NotificationChannel(String.valueOf(Notification_ID), MsgService.class.getName(), NotificationManager.IMPORTANCE_LOW);        NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);        manager.createNotificationChannel(channel);
 .setChannelId(String.valueOf(Notification_ID))//该句适配android 8.0 版本

最终就为:
 NotificationChannel channel = new NotificationChannel(String.valueOf(Notification_ID), MsgService.class.getName(), NotificationManager.IMPORTANCE_LOW);        NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);        manager.createNotificationChannel(channel);        Notification.Builder builder = new Notification.Builder(getApplicationContext());        builder.setContentTitle("")                .setContentText("正在运行中")                .setChannelId(String.valueOf(Notification_ID))//该句适配android 8.0 版本                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.so_logo))                .setSmallIcon(R.mipmap.so_logo)                .setOngoing(true)//设置是否是一个正在执行的通知                .setContentIntent(PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT));        // 获取构建好的Notification        Notification notification = builder.build();        //设置为前台服务,必须绑定一个notification对象,实际上也就是说如果你想做持久化的Service就得让用户知道,PID是自定义的整数表明notification的ID        startForeground(Notification_ID, notification);

然后再运行项目,便再也不会提示那个不适配的问题了.


原创粉丝点击