Android通知不显示
问题描述:
我写了一个应该显示通知的代码。我从TimePicker组件中选择小时和分钟(在给定时间每天弹出通知),然后为Notification接收器创建一个意图。数据库用适当的信息进行更新,所有内容都使用AlarmManager进行设置。请求代码(“代码”变量)对于每个通知都是唯一的。我下面粘贴代码片段:Android通知不显示
SettingActivity类:
findViewById(R.id.buttonNotification).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
int hour, minute, id;
Calendar calendar = Calendar.getInstance();
PendingIntent pendingIntent;
calendar.set(Calendar.HOUR_OF_DAY,timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
Intent intent = new Intent(getApplicationContext(),Notifcation_receiver.class);
hour = timePicker.getCurrentHour();
minute = timePicker.getCurrentMinute();
if(extra!=null){
pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),extra.getInt("Code"),intent,PendingIntent.FLAG_UPDATE_CURRENT);
intent.putExtra("Code",extra.getInt("Code"));
db.updateNotification(hour,minute,extra.getInt("ID"));
}
else{
int code= Notification.getID();
intent.putExtra("Code",code);
pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),code,intent,PendingIntent.FLAG_UPDATE_CURRENT);
db.insertNotification(hour,minute);
}
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
startActivity(new Intent(SettingActivity.this, NotificationActivity.class));
}
});
}
通知接收器类:
public class Notifcation_receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int code = intent.getIntExtra("Code",0);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent repeating_intent = new Intent(context,MainActivity.class);
repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context,code,repeating_intent,PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setSmallIcon(android.R.drawable.arrow_up_float)
.setContentTitle("title")
.setContentText("text")
.setAutoCancel(false);
notificationManager.notify(code,builder.build());
}
}
我似乎无法找到问题,导致缺乏的计划通知。感谢您的任何帮助。
答
问题是,正如Mehmed所述,没有为NotificationService设置通道。
logcat的日志:
“E/NotificationService:否通道发现PKG = com.example.kuba.quizapp,渠道ID = NULL”
它工作于API 22,但25及更高版本的通知必须与额外的频道信息一起构建。
你的targetSdkVersion是什么?如果它大于25,则检查此[问题](https://*.com/questions/43093260/notification-not-showing-in-android-8-oreo/43093261)。 – Mehmed
在API 26(logcat日志)上测试: “E/NotificationService:找不到pkg = com.example.kuba.quizapp,channelId = null的通道” –
感谢您提供一个好的提示! –