現在、サービス開始時に通知バーに表示される通知付きのフォアグラウンドサービスを作成しています。サービスが停止すると、通知は拒否されます。私の質問は、「すべての通知をクリア」または通知(スワイプ)の解除が発生したときにサービスを停止する方法はありますか?通知の実装を含むように更新フォアグラウンドサービスをキャンセルして通知を使用(スワイプ解除)する方法、またはすべての通知をクリアする方法はありますか?
:私はフォアグラウンドサービス通知をクリアすることができないと思ったのに
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.d(CLASS, "onStartCommand service started.");
if (getString(R.string.service_start_action) == intent.getAction())
{
Intent intentForeground = new Intent(this, ServiceMain.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendIntent = PendingIntent.getActivity(getApplicationContext(), 0, intentForeground, 0);
Notification notification;
Notification.Builder builder = new Notification.Builder(getApplicationContext())
.setSmallIcon(android.R.drawable.btn_star)
.setTicker("Service started...")
.setContentIntent(pendIntent)
.setDefaults(Notification.DEFAULT_ALL)
.setOnlyAlertOnce(true)
.setOngoing(false);
notification = builder.build();
notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
startForeground(SERV_NOTIFY, notification);
player.start();
}
else
{
Log.d(CLASS, "onStartCommand unable to identify acition.");
}
return START_STICKY;
}
Googleのこのサンプルをご覧ください:https://github.com/googlesamples/android-ActiveNotifications。これは、却下された通知だけでなく、通知グループ全体をリッスンする方法を示しています。 –
私が知る限り、通知を作成せずにフォアグラウンドサービスを「作成」することはできません。 Androidはこれを必要とします。なぜなら、ユーザーは知らないうちにシーンの背後でサービスを実行したくないからです。アクティビティが破棄され、フォアグラウンドで実行されているサービスが通知を受け取ったときに通知を削除するだけでは、単にキャンセルすることはできません。通知をキャンセルするには、 '.stopForeground(true)'コールを使用してフォアグラウンドサービス自体をキャンセルする必要があります。ブール値のパラメータは、通知とともにフォアグラウンドを停止するかどうかを示します。 –