状态栏中未显示 Android 前台服务通知

我已经在 SO 上尝试了各种解决方案,但似乎无法让它们中的任何一个工作。通知根本不会显示。谁能指出我的代码中可能存在的问题?


private void startRunningInForeground() {


        setupNotificationChannel();


        Intent showTaskIntent = new Intent(getApplicationContext(), MainActivity.class);

        showTaskIntent.setAction(Intent.ACTION_MAIN);

        showTaskIntent.addCategory(Intent.CATEGORY_LAUNCHER);

        showTaskIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


        PendingIntent contentIntent = PendingIntent.getActivity(

                getApplicationContext(),

                0,

                showTaskIntent,

                PendingIntent.FLAG_UPDATE_CURRENT);


        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, SERVICE_NOTIFICATION_CHANNEL);

        builder.setSmallIcon(R.drawable.ic_stat_ic_logo);

        builder.setContentTitle(getString(R.string.merge_notif_title));

        builder.setContentText(getString(R.string.merge_notif_description));

        builder.setContentIntent(contentIntent);

        builder.setWhen(System.currentTimeMillis());

        builder.setAutoCancel(false);

        builder.setOngoing(true);


        startForeground(NOTIFICATION_ID, builder.build());

    }


    private void setupNotificationChannel() {

        // Only run this on versions of Android that require notification channels.

        if(Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {

            return;

        }


        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        if(notificationManager == null) {

            return;

        }

    }  

没有收到任何错误消息并且正在创建通知渠道,因为我在应用程序设置中看到了它。


catspeake
浏览 190回答 2
2回答

慕后森

所以我能够通过扩展服务而不是 IntentService 来让它工作。我无法解释为什么会这样,但现在一切都按预期进行。

胡子哥哥

你的 startForeground 做什么?尝试修改它并确保您的操作系统> Android 8.0顺便说一句,频道只需要创建一次。PendingIntent contentIntent = PendingIntent.getActivity(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getApplicationContext(),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NOTIFICATION_ID, <---&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; showTaskIntent,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PendingIntent.FLAG_UPDATE_CURRENT);startForeground(NOTIFICATION_ID, builder.build());notificationManager.notify(NOTIFICATION_ID, builder.build()); <--可能是因为 Android O bg 服务限制//Start service:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {&nbsp; startForegroundService(new Intent(this, YourService.class));} else {&nbsp; startService(new Intent(this, YourService.class));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java