アプリケーションを作成し、イベントを使用して、Android通知バーに通知を追加しました。イベントの通知バーからその通知を削除する方法のサンプルが必要ですか?
アプリケーションを作成し、イベントを使用して、Android通知バーに通知を追加しました。イベントの通知バーからその通知を削除する方法のサンプルが必要ですか?
回答:
これは非常に簡単です。cancel
またはcancelAll
、NotificationManager を呼び出す必要があります。cancelメソッドのパラメーターは、キャンセルする通知のIDです。
APIを参照してください:http : //developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
あなたはこの簡単なコードを試すことができます
public static void cancelNotification(Context ctx, int notifyId) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
nMgr.cancel(notifyId);
}
cancelAll
通知マネージャーを呼び出すこともできるため、通知IDについて心配する必要もありません。
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
編集:私は反対票を投じられたので、おそらくこれはあなたのアプリケーションから通知を削除するだけであることを指定する必要があります。
startForeground(NOTIFICATION_ID, mNotification);
次のコードのように単にsetAutoCancel(True)を設定します。
Intent resultIntent = new Intent(GameLevelsActivity.this, NotificationReceiverActivityAdv.class);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
GameLevelsActivity.this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
getApplicationContext()).setSmallIcon(R.drawable.icon)
.setContentTitle(adv_title)
.setContentText(adv_desc)
.setContentIntent(resultPendingIntent)
//HERE IS WHAT YOY NEED:
.setAutoCancel(true);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(547, mBuilder.build());`
これは役立ちます:
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
これにより、アプリによって行われたすべての通知が削除されます
呼び出して通知を作成した場合
startForeground();
Service内で呼び出す必要がある場合があります
stopForeground(false);
まず、通知をキャンセルします。
を使用してフォアグラウンドで開始されたサービスから通知を生成する場合
startForeground(NOTIFICATION_ID, notificationBuilder.build());
次に発行
notificationManager.cancel(NOTIFICATION_ID);
通知がキャンセルされず、ステータスバーに通知が表示されます。この特定のケースでは、これらを2つの方法で解決します。
1>サービス内でstopForeground(false)を使用:
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
2>呼び出しアクティビティでそのサービスクラスを破棄します。
Intent i = new Intent(context, Service.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
if(ServiceCallingActivity.activity != null) {
ServiceCallingActivity.activity.finish();
}
context.stopService(i);
2番目の方法は、通知だけでなくプレーヤーも削除するため、音楽プレーヤーの通知をより優先します... !!
stopForeground(true); manager.cancelAll();
ことで解決しました!
これを試してください、
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
NotificationManagerを使用して、通知をキャンセルします。通知IDを提供するだけで済みます
mNotificationManager.cancel(YOUR_NOTIFICATION_ID);
NotificationManager.cancel(id)
正解です。ただし、通知チャネル全体を削除することで、Android Oreo以降の通知を削除できます。これにより、削除されたチャネルのすべてのメッセージが削除されます。
以下は、Androidのドキュメントの例です。
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);
Android API> = 23では、このような処理を行って、通知のグループを削除できます。
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}