我必须在android oreo和鞋面上做通知工作,但它没有显示,我该如何解决我的问题?我试过android developers.com的实现指令,但没有帮助,任何人都可以帮我这个代码?抱歉我的英语不好
if (newCount > 0) {
if (PrefUtils.getBoolean(PrefUtils.NOTIFICATIONS_ENABLED, true)) {
Cursor cursor = getContentResolver().query(EntryColumns.CONTENT_URI, new String[]{Constants.DB_COUNT}, EntryColumns.WHERE_UNREAD, null, null);
cursor.moveToFirst();
newCount = cursor.getInt(0); // The number has possibly changed
cursor.close();
if (newCount > 0) {
String text = getResources().getQuantityString(R.plurals.number_of_new_entries, newCount, newCount);
Intent notificationIntent = new Intent(FetcherService.this, HomeActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(FetcherService.this, 0, notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder notifBuilder = new Notification.Builder(MainApplication.getContext()) //
.setContentIntent(contentIntent) //
.setSmallIcon(R.drawable.ic_statusbar_rss) //
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)) //
.setTicker(text) //
.setWhen(System.currentTimeMillis()) //
.setAutoCancel(true) //
.setContentTitle(getString(R.string.spaRSS_feeds)) //
.setContentText(text) //
.setLights(0xffffffff, 0, 0);
if (PrefUtils.getBoolean(PrefUtils.NOTIFICATIONS_VIBRATE, false)) {
notifBuilder.setVibrate(new long[]{0, 1000});
}
String ringtone = PrefUtils.getString(PrefUtils.NOTIFICATIONS_RINGTONE, null);
if (ringtone != null && ringtone.length() > 0) {
notifBuilder.setSound(Uri.parse(ringtone));
}
if (PrefUtils.getBoolean(PrefUtils.NOTIFICATIONS_LIGHT, false)) {
notifBuilder.setLights(0xffffffff, 300, 1000);
}
if (Constants.NOTIF_MGR != null) {
Constants.NOTIF_MGR.notify(0, notifBuilder.getNotification());
}
}
} else if (Constants.NOTIF_MGR != null) {
Constants.NOTIF_MGR.cancel(0);
}
}
从Android 8开始,必须将所有通知分配给NotificationChannel。 Here你可以找到它的相关信息。
希望它会有所帮助