android 8.0判断应用是否在前台,Android 8.0通知栏显示适配(Notification不显示问题)...

本文解决Android 8.0 (SDK26) 中通知栏下载更新不显示的问题,介绍了如何创建通知渠道并调整重要性级别,确保所有设备上的下载进度可见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于测试反馈才发现,之前写好的通知栏下载更新在部分手机上显示不出,导致用户无法更新。起初因为强调是小米手机,所以没有往Android8.0的方向去想,默默的认为是更新方法错误,查看过log日志后可以正常更新,只是无法将更新下载的进度条显示在通知栏,这才想到Android8.0对于通知栏的权限管理,所以查阅资料之后,适配了8.0版本的问题。

Android O(也就是SDK26版本) 引入了 通知渠道(Notification Channels)其中新加了多个属性:

重要性

声音

振动

在锁屏上显示

替换免打扰模式

重要性级别分为:IMPORTANCE_NONE、IMPORTANCE_MIN、IMPORTANCE_MAX、IMPORTANCE_LOW、IMPORTANCE_HIGH(类似的内容官方已经全部做了说明,具体可以参考以上标注的链接)

所以看完API之后,才发现Android8.0中,对于通知栏的下载更新显示需要重新定义,拿个人定义的工具类来讲解,需要优先定义一个应用中唯一的ID和Name

private static final int YOUR_NOTIFICATION_ID = 0x002;

private static final String YOUR_CHANNEL_ID = "YOUR_NOTIFY_ID";

private static final String YOUR_CHANNEL_NAME = "YOUR_NOTIFY_NAME";

这里需要说明一下,官方的建议ID和Name字符尽量简短,不易过长,否则会被截取.

@RequiresApi(api = Build.VERSION_CODES.O)

public void CreateNotificationChannel(NotificationManager notificationManager) { NotificationChannel channel = new NotificationChannel(YOUR_CHANNEL_ID,YOUR_CHANNEL_NAME,Notifi  cationManager.IMPORTANCE_HIGH); notificationManager.createNotificationChannel(channel);

}

public void CreateNotification(String title, String content){

if (Build.VERSION.SDK_INT >= 26) { createNotificationChannel(getManager()); notification = new Notification.Builder(getApplicationContext(), YOUR_CHANNEL_ID).build(); } else { notification = new Notification(); }

//设置常规属性值

notification.icon = ;

notification.flags = ;

notification.tickerText = ;

notification.when = ;

notification.defaults = ;

notification.contentView = ;

}

常用字段:

contentIntent  设置PendingIntent对象,点击时发送该Intent

defaults 添加默认效果

flags 设置flag位,例如FLAG_NO_CLEAR等

icon 设置图标

sound 设置声音

tickerText 显示在状态栏中的文字

when 发送此通知的时间戳

工具类NotificationUtils中声明:

privateNotificationManager manager;

private NotificationManager getManager(){

if (manager == null){

manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

}

return manager;

}

二:另外关于通知栏下载更新完成后的安装,也需要注意

判断是否为8.0,如果是的话,需要检测“允许未知来源”

需要在清单文件AndroidManifest中加上如下权限

//请求安装未知应用来源的权限

ActivityCompat.requestPermissions(this, newString[]{ Manifest.permission.REQUEST_INSTALL_PACKAGES}, INSTALL_PACKAGES_REQUESTCODE);}

//请求安装未知应用来源的权限

ActivityCompat.requestPermissions(this, newString[]{ Manifest.permission.REQUEST_INSTALL_PACKAGES}, INSTALL_PACKAGES_REQUESTCODE);}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值