神铸利刃·装备养成活动门户

Android Studio Notification(状态栏通知) 不显示通知 解决

引言:在学习的过程中,我发现,无论怎么修改,甚至是直接复制了大佬的代码,我的程序都不能正确的弹出状态栏通知,在经过一晚上的纠缠后,终于找到了原因

通知不显示可能由多种原因引起:

通知权限:确保你的应用已经获得了正确的通知权限。在Android设备上,用户需要授予应用通知权限才能显示通知。你可以在应用的设置中检查通知权限的状态。

通知渠道:从Android 8.0(API级别26)开始,引入了通知渠道的概念,你需要创建并分配通知到相应的渠道才能显示通知。确保你在代码中正确创建了通知渠道,并将通知分配到相应的渠道。

通知优先级:通知可能会根据其优先级而被过滤或隐藏。确保你为通知设置了适当的优先级,以确保其能够在设备上显示。

通知栏设置:某些设备或用户可能会对通知栏进行自定义设置,可能会导致部分通知被隐藏或过滤。确保设备的通知设置没有对你的应用进行过滤或隐藏。

其他问题:通知不显示的问题可能还涉及其他因素,例如代码逻辑错误、设备或操作系统问题等。建议检查你的代码逻辑,确保通知被正确触发和创建。

影响我的是通知权限的问题,下面我带来解决方法:

方法一:

请求通知权限。在你的代码中,可以使用NotificationManagerCompat类来检查和请求通知权限

// 检查通知权限是否已经授予

boolean notificationPermissionGranted = NotificationManagerCompat.from(this).areNotificationsEnabled();

if (!notificationPermissionGranted) {

// 请求通知权限

Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)

.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());

startActivity(intent);

}

方法二:

在应用设置中引导用户开启通知权限。如果通知权限未被授予,你可以显示一个提示对话框或引导用户进入应用设置页面开启通知权限

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("提示");

builder.setMessage("您需要开启通知权限才能接收通知,请点击确定前往设置页面开启权限。");

builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)

.setData(Uri.fromParts("package", getPackageName(), null));

startActivity(intent);

}

});

builder.setNegativeButton("取消", null);

builder.show();

最后开启通知权限即可接收通知