10

いくつかの通知を作成するコードがいくつかありますが、これは本当に基本的なものです。

int icon = R.drawable.notification;
CharSequence tickerText = "Text";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);

Context context = getApplicationContext();
CharSequence contentTitle = "Text";
CharSequence contentText = "Text";
Intent notificationIntent = new Intent(this, RequestActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notification.flags |= Notification.DEFAULT_SOUND;
notification.flags |= Notification.DEFAULT_VIBRATE;
notification.flags |= Notification.DEFAULT_LIGHTS;
notification.flags |= Notification.FLAG_AUTO_CANCEL;

mNotificationManager.notify(notificationID, notification);

2.1ではすべて正常に動作します。4.0 では、スワイプして閉じるアクションが機能しないことを除いて、すべて正常に機能します。通知は少し横に移動し、スティックして跳ね返ります。何か案が?ありがとう。

4

3 に答える 3

14

「ONGOING」状態のため、通知をスワイプすることはできません。

最初の解決策:

設定フラグを次のコードに置き換えます。

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

デフォルトは defaults-section 用、フラグは flags-section 用です。

そして今、それが続いていた理由は?

すでにご存知かもしれませんが、通知のフラグ (およびデフォルト) はビット演算によって設定されます。各フラグが 2 のべき乗である定数値を持っていることを意味します。これらを加算すると、フラグ セットの一意の番号が得られ、実際に設定されているフラグをすばやく計算できます。

Notification.DEFAULT_VIBRATENotification.FLAG_ONGOING_EVENT の定数値は同じ2です。

于 2013-01-17T06:55:58.580 に答える
7

setOngoing (継続中のブール値)を使用する必要があります

これが「進行中」の通知かどうかを設定します。進行中の通知はユーザーが無視できないため、アプリケーションまたはサービスで通知をキャンセルする必要があります。これらは通常、ユーザーが積極的に関与しているバックグラウンド タスク (音楽の再生など) や、何らかの方法で保留中のためデバイスを占有しているバックグラウンド タスク (ファイルのダウンロード、同期操作、アクティブなネットワーク接続など) を示すために使用されます。

使用できます

.setOngoing(false);
于 2016-03-16T12:19:44.453 に答える
1

通知を行うときにこの行を挿入するだけです...

// Will show lights and make the notification disappear when the presses it
notification.flags == Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
于 2014-12-19T07:18:34.167 に答える