티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How to dismiss notification after action has been clicked
어떤 동작을 클릭했을 때 알림을 제거하는 방법
문제 내용
Since API level 16 (Jelly Bean), there is the possibility to add actions to a notification with
API 레벨 16(Jelly Bean)부터는 알림에 동작(action)을 추가할 수 있습니다.
builder.addAction(iconId, title, intent);
But when I add an action to a notification and the action is pressed, the notification is not going to be dismissed. When the notification itself is being clicked, it can be dismissed with
그러나 알림에 동작을 추가하고 동작이 눌렸을 때, 알림이 해제되지 않습니다. 알림 자체를 클릭하면 다음과 같이 해제할 수 있습니다.
notification.flags = Notification.FLAG_AUTO_CANCEL;
or
또는
builder.setAutoCancel(true);
But obviously, this has nothing to with the actions associated to the notification.
하지만 이 경우는 알림과 관련된 동작과는 아무런 관련이 없습니다.
Any hints? Or is this not part of the API yet? I did not find anything.
어떤 힌트가 있을까요? 아니면 이것은 아직 API의 일부가 아닌가요? 찾지 못했습니다.
높은 점수를 받은 Solution
When you called notify on the notification manager you gave it an id - that is the unique id you can use to access it later (this is from the notification manager:
알림 관리자(notification manager)에서 알림에 대해 id를 지정하면 이를 나중에 액세스할 수 있는 고유한 id로 사용할 수 있습니다. 알림 관리자에서 가져온 내용은 다음과 같습니다:
notify(int id, Notification notification)
To cancel, you would call:
알림을 취소하려면 동일한 id를 사용하여 다음과 같이 호출해야 합니다.
cancel(int id)
with the same id. So, basically, you need to keep track of the id or possibly put the id into a Bundle you add to the Intent inside the PendingIntent?
따라서 기본적으로 id를 추적하거나 PendingIntent 내부에 추가하는 Bundle에 id를 넣어야 합니다.
가장 최근 달린 Solution
You will need to run the following code after your intent is fired to remove the notification.
알림이 실행된 후에 다음 코드를 실행해야 알림을 제거할 수 있습니다.
NotificationManagerCompat.from(this).cancel(null, notificationId);
NB: notificationId is the same id passed to run your notification
참고: notificationId는 알림을 실행할 때 전달한 id와 동일합니다.
출처 : https://stackoverflow.com/questions/11883534/how-to-dismiss-notification-after-action-has-been-clicked
'개발 > 안드로이드' 카테고리의 다른 글
java.net.SocketException: socket failed: EPERM (Operation not permitted) 에러 수정하기 (0) | 2023.02.22 |
---|---|
액티비티 종료하기 전에 대화상자 띄워 재확인하기 (0) | 2023.02.22 |
Android WebView에서 JavaScript alert 동작하지 않는 문제 (0) | 2023.02.21 |
SharedPreferences.onSharedPreferencesChangeListener가 일관되게 호출되지 않는 문제 (0) | 2023.02.21 |
Espresso를 사용하여 다이얼로그가 표시되는지 확인하는 방법 (0) | 2023.02.20 |