打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android 8.0 版本更新的适配

最近代码君在测试公司的项目时候,发现项目在Android 8.0机型上运行的时候,版本更新功能会出现异常,启动下载的时候Android通知栏报错 : Failed to post notification on channel 'null',根据字面意思应该是Notification中的channel为空

Notification Channels 是什么

这个是从Android 8.0 引入的概念,目的是提供统一的系统来帮助用户管理通知,开发者可以为需要发送的每个不同的通知类型创建一个通知渠道。还可以创建通知渠道来反映应用的用户做出的选择。例如,可以为聊天应用的用户创建的每个聊天组建立单独的通知渠道。

Android 8.0 的用户可以使用一致的系统 UI 管理大多数与通知有关的设置,用过iPhone的就可以很好理解这个功能,就是以后Android的app,不能随意提示通知栏啦,用户可以设置消息在锁屏上显示、免打扰、消息震动提示、声音提示等,换句话说如果用户禁止在通知栏提示,那么apk就无法在通知栏提示了,这点对于Android用户来说是好事,省的一些app乱用权限,给用户一直弹消息

如何使用Notification Channels

一、创建通知渠道

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel mChannel = new NotificationChannel('channel_01', '消息推送', NotificationManager.IMPORTANCE_DEFAULT); manager.createNotificationChannel(mChannel); }

NotificationChannel 方法有三个参数channel_id、channel_name、channel_importce,这几个参数的代表的是channel的ID,名字以及消息的重要等级,id和name都可以谁便起,id保证唯一就好,重要等级代码君就填写默认的啦

二、创建完channel,调用Notification.Builder.build()

Context context = DJApplication.getInstance(); Notification.Builder builder = new Notification.Builder(context); builder.setTicker('开始下载'); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setLargeIcon(BitmapFactory.decodeResource(DJApplication.getInstance().getResources(), R.mipmap.ic_launcher)); builder.setAutoCancel(true); PendingIntent pIntent = PendingIntent.getActivity(context, 0, new Intent(), PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentTitle('下载中'); builder.setContentIntent(pIntent); builder.setContentText(text); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { builder.setChannelId('channel_01'); } manager.notify(1, builder.build());

builder.setChannelId 设置有效的通知渠道 ID,这个ID要和之前创建时候的Channel_ID相同,运行之后就不好报上面的错误啦

Android 8.0 安装权限问题

版本更新后,正常是需要通过Intent,调用apk文件路径,进行自动安装的,但是8.0 下载完文件,并没有调用成功,bug排查之后发现的问题是:

在 Android 8.0 中,安装未知应用权限提高了安装未知来源应用时的安全性。此权限与其他运行时权限一样,会与应用绑定,在安装时进行提示,确保用户授予使用安装来源的权限后,此权限才会提示用户安装应用。在运行 Android 8.0 或更高版本的设备上使用此权限时,恶意下载程序将无法骗取用户安装未获得预先授权的应用,所以我们需要加入安装apk文件的权限

总结

目前发现Android 8.0 的坑就这些,如果读者发现有其他8.0 的坑,或者遇到8.0 的坑,欢迎留言交流

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android O(8.0)通知栏适配
Android O(8.0) Notification解决方案
网易 Android 通知栏适配全方案
Android Ion 框架 文件下载
通知未被驳回(Android)
实现Android的消息通知栏
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服