通知不会出现在前台服务中

时间:2016-01-27 09:57:43

标签: android android-service android-notifications

我正在使用以下代码:

$id = $this->route('gecko')

private void startForeground(boolean isActive) {
        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        Notification notification = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(getString(isActive ? R.string.title_agent_active : R.string.title_agent_inactive))
                .setContentIntent(pendingIntent)
                .build();

        startForeground(1, notification);
    }

此代码通知不会出现。

但是如果我用NotificationManager.notify(...)替换startForeground(...) - 它会显示通知,所以,我认为,至少通知构建代码是可以的。

哪里可能是问题?

2 个答案:

答案 0 :(得分:5)

如果您使用IntentService,只要onHandleIntent()方法完成执行,服务就会被销毁,然后通知将被删除。

答案 1 :(得分:1)

  1. 尝试将id更改为其他
  2. onCreate()方法
  3. 开始
  4. 检查设备中是否未阻止通知
  5. 尝试使用这些标志:noti.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
  6. 使用通常的Service
  7. 尝试此解决方案(适用于我的应用):

    private void fg() {
            Intent intent = launchIntent(this);
    
            PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
            mBuilder = new NotificationCompat.Builder(this);
            mBuilder.setContentTitle(getResources().getString(R.string.app_name))
                .setContentText(getResources().getString(R.string.app_name))
                .setSmallIcon(R.drawable.icon)
                .setContentIntent(pIntent);
            noti = mBuilder.build();
            noti.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
            startForeground(_.ID, noti);
    
        }