引言:在学习的过程中,我发现,无论怎么修改,甚至是直接复制了大佬的代码,我的程序都不能正确的弹出状态栏通知,在经过一晚上的纠缠后,终于找到了原因
通知不显示可能由多种原因引起:
影响我的是通知权限的问题,下面我带来解决方法:
方法一:
请求通知权限。在你的代码中,可以使用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();
最后开启通知权限即可接收通知