android - 应用程序图标徽章未显示 Android
问题描述
对于一项任务,我必须编写一个可以显示所有联系人及其生日日期(并创建/修改它们)的应用程序。到目前为止,一切都很好。然后,我必须向所有今天出生的人发出通知。
通知启动没有问题,但我没有得到应用程序图标徽章。
搜索后,我发现我必须使用频道 -> 完成。
如果启用通知点,我已在设置中验证:
我已经验证了 android 文档说“它是自动的,你应该没有任何事情可做”
我的模拟器使用的是 Android 9.0,它比 android oreo 更好。
那么怎么了?
public class BirthdayListener implements View.OnClickListener {
private static final String CHANNEL_ID = "ch.hefr.tic.birthday_channel";
private static final int SUMMARY_ID = -1;
private static final String GROUP_KEY = "ch.hefr.tic.group_channel";
private Context context;
private NotificationManager notificationManager;
public BirthdayListener(Context context) {
this.context = context;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = context.getResources().getString(R.string.channel_name);
String description = context.getResources().getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
channel.setDescription(description);
channel.setShowBadge(true);
notificationManager = context.getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
@Override
public void onClick(View v) {
List<Contact> hasBirthday = searchBirthdays();
NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
NotificationCompat.InboxStyle summaryStyle = new NotificationCompat.InboxStyle();
summaryStyle.setBigContentTitle(hasBirthday.size() + " new messages");
for(int i = 0; i < hasBirthday.size(); ++i) {
Contact contact = hasBirthday.get(i);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_notification)
.setContentTitle("Birthday")
.setContentText(contact.getName() + " has his birthday today !")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setGroup(GROUP_KEY)
.setNumber(5);
String phoneNumber = contact.getPhoneNumber();
if(phoneNumber != null && !phoneNumber.equals("")) {
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setData(Uri.parse("sms:" + phoneNumber));
PendingIntent pending = PendingIntent.getActivity(context, 0, smsIntent, 0);
builder.addAction(R.drawable.ic_arrow_back, "SMS", pending);
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
notificationManagerCompat.notify(i, builder.build());
else
notificationManager.notify(i, builder.build());
}
NotificationCompat.Builder summaryBuilder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_notification)
.setContentTitle("Today Birthdays")
.setContentText(hasBirthday.size() + " new messages")
.setStyle(summaryStyle)
.setGroup(GROUP_KEY)
.setGroupSummary(true)
.setNumber(5);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
notificationManagerCompat.notify(SUMMARY_ID, summaryBuilder.build());
else
notificationManager.notify(SUMMARY_ID, summaryBuilder.build());
}
}
编辑:尝试在 NotificationCompat.Builder 构建器上使用setColor ,但它改变了图标的颜色。仍然没有任何徽章。
解决方案
感谢 Bob 和他的链接:https ://support.google.com/pixelphone/thread/1575301?hl=en ,我发现我必须转到设置 < 应用和通知 < 特殊应用访问 < 通知 < 通知访问 <打开“像素启动器”。然后通知点将按预期出现!
我猜是时候写我的报告了。
推荐阅读
- javascript - 有没有办法在用户输入字符时获取用户输入值,这意味着一旦他们点击提交
- php - 空购物车按钮无法删除购物车
- ruby-on-rails - Rails 返回创建的方式在控制器上有很多关联
- mysql - DBeaver 数据格式 - 巴西
- c++ - c ++中每次输出不同(意外行为)
- sed - 尝试将“user='mysql'”替换为“user=`whoami`”时,sed 无法按预期工作
- python - Python Navigation Timeout Exceeded:超过 8000 毫秒
- typescript - 在 TypeScript 中启用异步函数的干净方法链
- c# - 如何在 .NET Core MVC 2.2 中一次插入多个输入条目
- node.js - 有没有更好的方法来获取 Stripe 总费用?