11

短い質問:

サービスに使用される通知を作成するために NotificationCompat.Builder クラスを使用しようとしていますが、何らかの理由で、通知が表示されないか、サービスが必要なときに通知をキャンセルできません。破壊された(またはフォアグラウンドにいるのをやめた)。

私のコード:

@Override
public int onStartCommand(final Intent intent, final int flags, final int startId) {
    final String action = intent == null ? null : intent.getAction();
    Log.d("APP", "service action:" + action);
    if (ACTION_ENABLE_STICKING.equals(action)) {
        final NotificationCompat.Builder builder = new Builder(this);
        builder.setSmallIcon(R.drawable.ic_launcher);
        builder.setContentTitle("content title");
        builder.setTicker("ticker");
        builder.setContentText("content text");
        final Intent notificationIntent = new Intent(this, FakeActivity.class);
        final PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        builder.setContentIntent(pi);
        final Notification notification = builder.build();
        // notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
        // notification.flags |= Notification.FLAG_NO_CLEAR;
        // notification.flags |= Notification.FLAG_ONGOING_EVENT;

        startForeground(NOTIFICATION_ID, notification);
        // mNotificationManager.notify(NOTIFICATION_ID, notification);

    } else if (ACTION_DISABLE_STICKING.equals(action)) {
        stopForeground(true);
        stopSelf();
        // mNotificationManager.cancel(NOTIFICATION_ID);
    }
    return super.onStartCommand(intent, flags, startId);
}

コメントされたコマンドは、それを機能させるための私の試みです。何らかの理由でどれも機能しませんでした。

contentIntent が必要だったので、偽のアクティビティを追加しましたが、それでも機能しません。

誰でも助けてもらえますか?

4

1 に答える 1

9

少し前にまったく同じ問題がありましたが、何らかの理由で通知 ID 0 が でうまく機能しないことがわかりました。startForeground()それはコードの の値NOTIFICATION_IDですか?


編集: ドキュメントが更新され、0 は無効な ID であると記載されました

于 2013-04-28T17:08:25.687 に答える