计划通知在版本8和9的某些android设备上不起作用

问题描述 投票:0回答:2

通知在版本8和更高版本的某些实际android设备上不起作用尽管启用了9个通知设置,但在仿真器。我正在安排警报管理器以触发通知那个时候使用广播接收器,其中通知是生成。

private void generateNotification(Context context, String message) {

        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        createNotificationChannel(notificationManager);
        RemoteViews view = new RemoteViews(context.getPackageName(), R.layout.notification_main);
        view.setImageViewResource(R.id.ImageView1, R.drawable.tenkey_icon);
        view.setTextViewText(R.id.title1, Utils.NOTIFICATION_TITLE);
        view.setTextViewText(R.id.message1, message);
        view.setTextViewText(R.id.time1, notificationTiming);
        Intent notificationIntent = new Intent(context, MainActivity.class);
        notificationIntent.putExtra("content", message);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

        Notification.Builder builder=new Notification.Builder(context)
                .setSmallIcon(R.drawable.ic_launcher)
                .setOngoing(true)
                .setContentIntent(PendingIntent.getActivity(context, 0, notificationIntent, 0))
                .setContent(view);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            builder.setChannelId(CHANNEL_ID);
        }
        Notification notification = builder.build();
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notification.defaults |= Notification.DEFAULT_SOUND;
        notification.defaults |= Notification.DEFAULT_VIBRATE;
        notificationManager.notify((int)System.currentTimeMillis() % 1000000, notification);
    }



private void createNotificationChannel(NotificationManager manager) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel serviceChannel = new NotificationChannel(
                    CHANNEL_ID,
                    "Shankaram",
                    NotificationManager.IMPORTANCE_DEFAULT
            );
            manager.createNotificationChannel(serviceChannel);
        }
    }

由于在仿真器中工作正常,我没有所有实际设备测试和调试我停留在这一点上。任何事情都应该处理Android Pie上的警报管理器?请建议

android notifications version
2个回答
0
投票

在Android 8及更高版本中,您必须使用Notification channels

[从Android 8.0(API级别26)开始,必须将所有通知分配给某个频道,否则它将不会出现。通过将通知分类为通道,用户可以禁用应用程序的特定通知通道(而不是禁用所有通知),并且用户可以控制每个通道的视觉和听觉选项,所有这些操作均来自Android系统设置(图11)。用户还可以长按通知以更改关联频道的行为。


0
投票

我已经通过仔细检查所有通知解决了这个问题手机中的设置,并启用所有设置,最后工作了。没有代码更改。

© www.soinside.com 2019 - 2024. All rights reserved.