永久通知不显示

时间:2019-05-26 08:59:43

标签: android notifications

我于2017年底在Play商店中提交了我的应用,该应用正常运行。 然后它是在Eclipse中构建的。

现在,我在Android Studio中运行它,相同的代码未显示任何通知。 这是一个永久性通知,在我调用应用程序的finish()方法之后出现。 (为什么这样做:如果您想知道,请参阅底部)。

因此,我查看了所有示例和所有工作。没有显示单个通知。

因此,我开始一个活动,并在该活动中显示通知。然后我打电话给finish()

这是我的代码:

Intent intent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
                intent, 0);

        CharSequence connectedPart = getResources().getString(R.string.app_name);

        String melding = "";

        melding = getResources().getString(R.string.screentimeoutsetto) + " "  + newTimeString + ".";
        NotificationManager notificationManager = (NotificationManager) this
                .getSystemService(Context.NOTIFICATION_SERVICE);

        Notification notification = new Notification.Builder(this)
                .setContentTitle(connectedPart)
                .setTicker(connectedPart)
                .setContentText(melding)
                .setSmallIcon(R.drawable.ic_stat_name)
                .setContentIntent(pendingIntent)
                .setOngoing(true)
                .build();
        notification.flags |= Notification.FLAG_ONGOING_EVENT;
        notification.flags |= Notification.FLAG_NO_CLEAR;
        notificationManager.notify(2, notification);

依赖性:

dependencies{
    implementation "com.android.support:support-compat:26.1.0"
}

为什么我这样做: 我的应用程序执行1件事:切换screentimeout。因此,当您启动它时,它将屏幕超时设置为30分钟(启动,设置通知,然后finish())。重新开始,它将删除通知并恢复屏幕超时的原始值。

2 个答案:

答案 0 :(得分:1)

从Android Oreo开始,所有通知都需要一个通知通道,否则该通知将不会发布,并且错误会出现在您的logcat中。这是一个示例,该示例是从我的一个应用程序中提取的:

private static void createNotificationChannel(Context ctx) {
    if(SDK_INT < O) return;

    final NotificationManager mgr = ctx.getSystemService(NotificationManager.class);
    if(mgr == null) return;

    final String name = ctx.getString(R.string.channel_name);
    if(mgr.getNotificationChannel(name) == null) {
        final NotificationChannel channel =
                new NotificationChannel(CHANNEL_ID, name, IMPORTANCE_DEFAULT);
        mgr.createNotificationChannel(channel);
    }
}

//Usage...
createNotificationChannel(context);

NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID);
builder.setSmallIcon(R.drawable.ic_alarm_white_24dp);
//etc...
manager.notify(id, builder.build());

答案 1 :(得分:1)

现在,从Android 8.0起,您需要在显示通知之前创建通知通道。这是文档link

https://developer.android.com/training/notify-user/channels