当前位置: 首页 > 知识库问答 >
问题:

android系统托盘中的通知,不工作

屈升
2023-03-14

我已经设置了接收通知的代码,但它不起作用:

                String ns = Context.NOTIFICATION_SERVICE;
                NotificationManager notificationManager = (NotificationManager) getSystemService(ns);
                int icon = R.drawable.messages_received;
                CharSequence contentTitle = "TITLE";
                Intent notificationIntent = new Intent(this, MainActivity.class);
                PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

                Context context = getApplicationContext();
                NotificationCompat.Builder builder = new NotificationCompat.Builder(context);

                Notification notification  = builder
                        .setContentIntent(contentIntent)
                        .setSmallIcon(icon)
                        .setWhen( System.currentTimeMillis())
                        .setContentTitle(contentTitle)
                        .setContentText(message.getMessage())
                        .build();

                notification.flags |= Notification.FLAG_AUTO_CANCEL;
                notification.defaults |= Notification.DEFAULT_SOUND;
                notification.defaults |= Notification.DEFAULT_VIBRATE;
                notification.defaults |= Notification.DEFAULT_LIGHTS;

                final int NOTIFY = 1;
                notificationManager.notify(NOTIFY, notification);

我用它在我的主要活动,我尝试了它,因为电话是待机。我该怎么解决?它需要其他代码吗?我遵循了以下指南:http://www.dre.vanderbilt.edu/~schmidt/android/android-4.0/out/target/common/docs/doc-comment-check/guide/topics/ui/notifiers/notifications.html

谢谢

共有1个答案

邬令
2023-03-14
 public static final String CHANNEL_ID = "com.example.test.services";
    public static final String CHANNEL_NAME = "UploadBackgroundService";
    public static final int FOREGROUND_ID = 1339;

private void createAndShowForegroundNotification() {

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

            NotificationChannel chan = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_NONE);
            chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
            manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            assert manager != null;
            manager.createNotificationChannel(chan);

            notificationBuilder = new NotificationCompat.Builder(this, CHANNEL_ID);
            Notification notification = notificationBuilder
                    .setContentTitle("Image upload service")
                    .setContentText("Uploading Images...")
                    .setPriority(NotificationManager.IMPORTANCE_HIGH)
                    .setCategory(Notification.CATEGORY_SERVICE)
                    .setOngoing(true)
                    .setSmallIcon(R.drawable.logoo)
                    .setAutoCancel(false)
                    .build();
            startForeground(FOREGROUND_ID, notification);
        } else {
            notificationBuilder = new NotificationCompat.Builder(this,CHANNEL_ID )
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setPriority(NotificationCompat.PRIORITY_HIGH)
                    .setContentTitle("Image upload service")
                    .setContentText("Uploading Images...")
                    .setOngoing(true)
                    .setSmallIcon(R.drawable.logoo)
                    .setAutoCancel(false);
            Notification notification = notificationBuilder.build();
            startForeground(FOREGROUND_ID, notification);
        }
    }

请尝试此代码。用您自己的参数替换所需的参数。

 类似资料:
  • 我正在使用Firebase云消息为Android做推送通知,一切都很顺利,但我在想系统托盘的图标颜色是怎么回事。它正在被变成一个灰度图像,而不是保持它原来的颜色。我可以用方法为它着色,但我希望图标不会失去它的颜色,这可能吗?我已经尝试使用各种不同的图像,有自己的大小,透明/非透明,白色背景等,基于一些帖子,我可以找到。我似乎找不到关于这里实际发生的事情的答案。我的编译/目标sdk目前是26。我在模

  • 将图标和上下文菜单添加到系统托盘。 进程: 主进程​ Tray是一个[EventEmitter][event-emitter]. 1 const {app, Menu, Tray} = require('electron') 2 let tray = null 3 app.on('ready', () => { 4 tray = new Tray('/path/to/my/icon') 5 con

  • 系统托盘 添加图标和上下文菜单到系统通知区 进程:主进程 Tray 是一个 EventEmitter. const { app, Menu, Tray } = require('electron') let tray = null app.on('ready', () => { tray = new Tray('/path/to/my/icon') const contextMenu =

  • 我在Android上尝试了以下内容: 从Firebase控制台发送通知:只有当应用程序位于后台时,我才能在系统托盘中看到通知。 将post请求发送到(如本文所述),同时使用和Paylods:同样,我只能在应用程序位于后台时在系统托盘中看到通知。 该文件提到: 我用的是Android和Cordova/Ionic。

  • 在onMessageReceived方法中,我将一些数据保存在本地数据库中。 如果我点击通知时应用程序在后台,它会将我重定向到launcher活动。在这里,我正在处理来自包的传入数据,并将其保存在本地数据库中。

  • 系统托盘是应用程序窗口之外的菜单。 在MacOS和Ubuntu上,它位于屏幕的右上角。 在Windows上,它位于右下角。 我们可以使用Electron为系统托盘中的应用程序创建菜单。 创建一个新的main.js文件并将以下代码添加到其中。 准备好png文件用于系统托盘图标。 const {app, BrowserWindow} = require('electron') const url =