1

BroadcastReceiver에 보낼 다중 인 텐트를 예약하고 있습니다. 모든 인 텐트 간의 차이점은 수신 할 시간과 이에 포함 된 추가 데이터입니다.AlarmManager로 특정 PendingIntents 취소하기

이제 사용자가 특정 알람을 취소 할 수 있도록해야합니다. AlarmManager.cancel() 자바 독에 의하면, filterEquals 방법을 사용 의도를 비교 :

http://developer.android.com/reference/android/content/Intent.html#filterEquals(android.content.Intent) 

이제 문제 filterEquals에있어서, 내 의도가 동일하다는 것이다. "조치, 데이터, 유형, 클래스 및 범주"에 대한 메소드 점검.

고유 데이터는 의도적 인 번들 또는 AlarmManager의 시간으로 표시됩니다. 만들 것

intent.setData(Uri.withAppendedPath(Uri.EMPTY, "some_unique_data")); 

모든 의도 독특한 filterEquals 방법에 따라하지만,이 같은 데이터를 변경 한 후, 내 의도는 더 이상 브로드 캐스트 리시버에 도달하지 않습니다 사용 - 예를 들어, 나는 이러한 매개 변수를 변경했습니다.

filterEquals에 따라 모든 의도를 변경하고 내 간단한 BroadcastReceiver에 여전히받을 수있는 데이터의 특정 비트는 무엇입니까?

아마도 내 수신기를 어떤 방식 으로든 수정할 수 있습니까?

+0

requestCode라고하는 PendingIntent.getBroadcast 메소드에는 매개 변수가 있지만 문서에는 "requestCode 보낸 사람에 대한 개인 요청 코드 (현재 사용되지 않음)"라는 매개 변수가 있습니다. 즉,이 코드가 어떤 식 으로든 사용되지 않거나 보류중인 의도를 취소하기위한 고유 ID로 지정할 수 있습니까? – Kostas

+0

답변을 수락 할 수 있습니까?그러면 열려있는 질문 목록에서이 질문을 제거하고 비슷한 문제가있는 다른 사람을 도울 수 있습니다. 감사. –

답변

1

내 응용 프로그램에서 비슷한 문제가 발생했습니다. 내 앱에서 SQLite DB를 사용하여 각 알람에 대한 세부 정보를 고유 한 ROW_ID와 함께 저장했습니다.

내 경보 목록보기에서 각 행에 해당 ROW_ID가 연결되어 있습니다. 사용자가 특정 행을 클릭하면 , 방금

지금, 내 모든 알람이 자신의 데이터 일부가 설정 한 텐트로 생성 된 삭제 작업을 수행하는 방법이 ROW_ID을 통과 :

Uri.parse(Constants.INTENT_PRE + ROW_ID); 

그래서 그들을 삭제하기 위해, 나는 그것을 창조하는 동안 사용되었던 동일한 데이터 (위의 것과 유일한 ROW_ID와 함께)를 가진 인 텐트를 생성한다.

"액션, 데이터, 유형, 클래스 및 범주"에서 말할 것도없이 "데이터"부분 만 기존 PendingIntents마다 다릅니다.

희망이 도움이됩니다.

+0

안녕하세요. 글쎄, 당신이 당신의 상수에 무엇을 가지고 있는지 모르겠지만 내 안에는 INTENT_PRE가없고 예를 들어 Uri.parse (Constants.CONTENT_DIRECTORY + o.getId())로 설정하면 broadcastReceiver에 수신되지 않습니다. – Kostas

+0

상수는 번역 할 필요가 없거나 UI의 일부가 아닌 일부 문자열 상수를 저장하는 클래스입니다. – zeiger

3

좋아, 그래서 알아 냈어.

return PendingIntent.getBroadcast(context, time*100000+o.getId(), toFire, 0); 

이제 시간이 중 24 또는 15 (24 시간 전에 분에서 15 분 내 알람 화재 이벤트 전) 및 알람 데이터가 내 모든 알람이 독특한 시간과 오브젝트 ID를 가지고,이 내가 내 PendingIntent를 생성하는 방법이다 개체에 고유 한 ID가 있습니다. 그래서 둘 다 추가하고 getBroadcast의 "requestCode"매개 변수로 지정합니다. 동일한 데이터를 기반으로 고유 한 의도를 만들면 충분합니다. 같은 문제가있는 사람에게 도움이되기를 바랍니다.

관련 문제