android - Android 通知不会显示在设备上
问题描述
我无法弄清楚为什么此通知不会显示在设备上。我正在使用的设备正在运行 OS9。任何帮助都会很棒!
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.d("TestApp", "Notification Received : " + remoteMessage.getData());
NotificationUtils.getInstance(getApplicationContext()).createChannel(NotificationUtils.DEFAULT_CHANNEL);
NotificationCompat.Builder notification = buildBasicNotification(getApplicationContext(), remoteMessage.getFrom(), remoteMessage.getData().get("_msg"), NotificationUtils.DEFAULT_CHANNEL);
displayNotification(notification);
}
public static NotificationCompat.Builder buildBasicNotification(Context context, String title, String msgText, String channelId) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentTitle(title)
.setContentText(msgText)
.setSmallIcon(R.drawable.alert_icon)
.setAutoCancel(false);
return builder;
}
private void displayNotification(NotificationCompat.Builder builder) {
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(0, builder.build());
}
这是 NotificationUtils 中的两个重要方法
public static NotificationUtils getInstance(Context context) {
if (instance == null) {
instance = new NotificationUtils(context);
}
return instance;
}
NotificationUtils(Context context) {
super(context);
this.context = context;
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createAlertChannel();
deleteChannel("Miscellaneous");
}
}
解决方案
我终于明白了
错误在此方法内部。
public static NotificationCompat.Builder buildBasicNotification(Context context, String title, String msgText, String channelId) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentTitle(title)
.setContentText(msgText)
.setSmallIcon(R.drawable.alert_icon)
.setAutoCancel(false);
return builder;
}
确保NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
接收到 channelId。
所以应该是...NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId)
推荐阅读
- c# - 使用c#动态应用excel行的背景颜色
- python - 在 1 台机器和大型数据集上使用 Dask 的 KilledWorker 异常?
- django - 如何在 DRF 的列表中传递详细 url
- c# - `UnityEngine.WorldParticleCollider' 由于其保护级别而无法访问
- vba - 使用 VBA 将电子邮件打印到 PDF - 首次运行会生成空白文档
- javascript - 应提供什么 ARIA 代码以使这些按钮可访问
- javascript - createStore 函数返回未定义的存储对象
- c# - 使用 azure 函数将消息发送到主题的哪种方式?
- scrapy - Scrapy:TypeError:“NoneType”类型的参数不可迭代
- c# - 如何将内容对象(在控制器中)放入另一个要返回的对象中