Android端使用flutter_callkit_incoming插件时来电通知图标异常显示Flutter Logo的问题咨询
Android端使用flutter_callkit_incoming插件时来电通知图标异常显示Flutter Logo的问题咨询
看起来你碰到了flutter_callkit_incoming在Android上的一个常见小坑——来电通知的图标死活显示Flutter Logo,哪怕你已经替换了应用的启动图标,项目和插件里也找不到这个Logo的影子。我之前帮朋友排查过类似问题,给你几个可行的解决思路:
1. 先在Flutter层明确指定通知图标
很多时候插件默认不会自动读取你的应用启动图标,需要在调用来电通知时手动指定。在构建showCallkitIncoming的参数时,加上icon字段,值为你替换后的启动图标名称(不带后缀):
final callParams = <String, dynamic>{ 'id': 'unique_call_id', 'nameCaller': '来电人姓名', 'appName': '你的应用名称', 'icon': 'ic_launcher', // 这里填你的启动图标文件名,比如你替换后的ic_launcher // 其他必填参数(比如号码、类型等)... }; await FlutterCallkitIncoming.showCallkitIncoming(callParams);
如果之前没设置这个参数,插件会 fallback 到内部的默认图标(就是你看到的Flutter Logo),手动指定后应该会优先使用你配置的图标。
2. 直接修改插件的Android原生代码(你有fork版本,这个最直接有效)
如果Flutter侧配置后还是没效果,那大概率是插件的Android部分在创建通知时,没有正确引用应用的图标资源,甚至可能硬编码了默认图标。你可以在fork的插件源码里做以下修改:
- 找到插件中处理来电通知的Kotlin文件,比如
CallkitIncomingService.kt或者FlutterCallkitIncomingPlugin.kt - 定位到创建
NotificationCompat.Builder的代码块,明确设置通知的小图标为你的应用启动图标:
// 找到创建通知构建器的代码,修改setSmallIcon的参数 val notificationBuilder = NotificationCompat.Builder(context, channelId) .setSmallIcon(R.mipmap.ic_launcher) // 这里换成你的图标资源,注意是mipmap还是drawable目录 .setContentTitle(callerName) .setContentText(callerNumber) // 其他通知相关配置...
- 同时,检查通知渠道的创建代码,确保渠道的图标也同步设置,避免系统用默认图标填充:
val callChannel = NotificationChannel( channelId, "来电通知渠道", NotificationManager.IMPORTANCE_HIGH ).apply { setShowBadge(true) setSmallIcon(R.mipmap.ic_launcher) // 这里也要设置成你的应用图标 // 其他渠道配置... } notificationManager.createNotificationChannel(callChannel)
3. 清理缓存排除旧资源干扰
很多时候,项目或设备上的旧资源缓存会导致图标不更新,你可以做以下操作:
- 运行
flutter clean清理Flutter项目的构建缓存 - 完全卸载设备上的旧应用,再重新安装新构建的版本
- 确保你的Flutter项目依赖的是你fork后的插件版本,而不是pub仓库里的原版本
内容来源于stack exchange
相关产品推荐
相关产品推荐

