Broadcast Receiver – Part 3, Listening to custom intent broadcasts

안녕 얘들 아 CodeTutor andmy 이름은 Anil Deshpande입니다 이전 비디오에서는 어떻게하면 여러 인 텐트를들을 수있는 broadcastreceiver

이러한 의도 브로드 캐스트는 기본적으로 시스템에서 생성 된 의도 된 브로드 캐스트입니다 내 의도의 방송을 만들고 방송 수신기를 디자인하고 싶다면 어떻게해야합니까? 내 맞춤 생성 의도 방송을 청취합니다 이 비디오에서 이 특정 시나리오를 구현하는 방법부터 시작하겠습니다 내 브로드 캐스트 리시버가 생성 된 것을 볼 수 있습니다 브로드 캐스트 수신기가 MyBroadcastReceiver이고 내 자신을 만들었습니다

인 텐트 필터를 사용하여 해당 브로드 캐스트 리시버를 매니페스트 파일에 등록합니다 인 텐트 필터에서 액션과 카테고리를 사용하고있는 것을 볼 수 있습니다 특정 동작 값을 생성하는 동안 고유 한 문자열을 제공 할 수 있습니다 이것은 당신 자신의 커스텀 스트링입니다 그리고 너는 DEFAULT 카테고리를 부여해야합니다

이제 활동으로 돌아 가면 그 특정 버튼을 클릭하면 의도와 그 특정 의도에 대한 나는 카테고리를 설정하고 액션 값 그리고 관찰하면 카테고리 값과 액션 값 브로드 캐스트 리시버를 등록하는 동안 사용한 것과 정확히 똑같습니다 매니페스트 파일에 다음 메소드는 sendBroadcast ()이며 인 텐트를 그 특별한 방법에 대한 논쟁 인 텐트 브로드 캐스트가 트리거됩니다 그래서 지금 이 특정 버튼을 클릭하면 토스트 메시지가 트리거됩니다

방송 수신의 이러한 특정 트리거링은 다른 응용 프로그램 이를 위해 나는 다른 응용 프로그램을 만들었습니다 특정 적용 나는 그것이 활동을 포함하고 있다는 것을 제외하고는 아무것도 없다 활동에는 버튼이 포함되어 있으며 해당 버튼을 클릭하면 의도를 유발합니다 코드가 동일하다면, 정확히 동일합니다

이전 신청서에 사용되었습니다 이 특정 응용 프로그램은 또한 다른 앱에 등록 된 브로드 캐스트 리시버를 트리거하십시오 우리에게 보여줘 그 행동 이것은 다른 앱이고 "방송 보내기"를 클릭하면됩니다 기본적으로 다른 앱에있는 브로드 캐스트 수신자를 트리거합니다

그래서 이것을 통해 당신은 분명히 방송에 관계없이 그것을 만들 수 있습니다 리시버가 존재하면 카테고리와 액션 값을 올바르게 전달하면 브로드 캐스트 리시버가 항상 트리거됩니다 그러나이 문제는 시나리오는 트리거를 실행할 작업 및 카테고리 값을 알고있는 모든 앱입니다 해당 브로드 캐스트 리시버가 트리거 할 수 있습니다 이 일이 일어나길 원치 않으면 어떡하지? 브로드 캐스트 리시버를 보호하고 싶습니다

모든 XYZ 앱은 특정 방송 수신기를 트리거 할 필요가 없습니다 그에 대한 내 보낸 것으로 호출 된 속성을 사용할 수 있습니다 너를 등록하면 매니 페스트 파일의 브로드 캐스트 리시버가 내 보낸 파일과 함께 선언합니다 속성 세트는 false와 같습니다 이렇게하면 브로드 캐스트 리시버가 앱 외부에서 들어오는 방송 의도에 반응합니다

이것이 하나의 측면이다 귀하의 방송 수신기 보안의 그러나 반대 시나리오도있을 수 있습니다 반대로 최악의 시나리오는 기본적으로 어떤 의도의 방송도 원하지 않는다는 것입니다 앱 밖에서 발생하는 것은 앱 하나에 브로드 캐스트 리시버가 있다고 가정하는 것입니다

또한 앱 XYZ에는 동일한 작업을 수행하는 브로드 캐스트 수신기가 있습니다 그리고 catagory values와 만약 내가 브로드 캐스트 인텐시티가 발생한다면 모든 브로드 캐스트 수신기가 트리거됩니다 당신은 그런 일이 일어나기를 원하지 않습니다 너는 그 의도를 원해 방송은 앱 1로만 제한됩니다

그 때문에 당신은 LocalBroadcastManager가 브로드 캐스트를 보냅니다 인 텐트 방송이 특정 앱에만 국한되며 앱 외부로 전파되지 않습니다 하나 그래서 우리가 데모에서 이것을 보도록하겠습니다 나는 첫 부분을 보게 될 것입니다

내 보낸 속성은 false와 같아서 앱을 다시 실행합니다 이제 내가 할 때 방송을 보내면 해당 특정 방송 수신기가 트리거되지 않습니다 응용 프로그램에서 가져온 값이 false로 설정 되었기 때문에 그러나 응용 프로그램이 트리거됩니다 따라서이 특정 버튼을 클릭하면됩니다

방송 수신기가 트리거되고있는 것을 관찰하고 다른 응용 프로그램과 방송을 보내면 방송을 볼 수 있습니다 왜냐하면 이 값의 false는 false로 설정됩니다 이제 내가 사실로 만들고 내가 갈거야 다른 응용 프로그램에 LocalBroadcastManager를 만듭니다 나를 초기화 시키겠습니다

그것은 localBroadcast 액티비티의 onCreate 메소드에 있습니다 getInstance는 getApplicationContext 문맥을 전달한 다음 이것을 사용한다 localBroadcastManager를 사용하여 브로드 캐스트를 보냅니다 그리고이 코드를 실행시켜 보겠습니다 이 특정 버튼을 클릭하면 브로드 캐스트가 트리거되지 않습니다

내 보낸 값이 true로 설정됩니다 무슨 일이 일어나고 있는지 방송은이 특정 응용 프로그램을 넘어서지 않습니다 LocalBRTester (앱 이름) 왜 이럴거야? 왜냐하면 만약 당신이 백퍼센트 귀하가 구현 한 브로드 캐스트 리시버가 귀하의 자신의 응용 목적과 그 특정 방송의 가능성은 없습니다 리시버가 앱 외부 어디서나 실행되거나 원하는 경우 불필요하게 앱 컨텍스트 외부에서 의도를 유발하지 않도록 항상 LocalBroadcastManager를 사용할 수 있습니다 그래서 우리가 토론 한 내용 지금까지이 동영상을 포함하여 이전 동영상에서 일반 방송으로

Android는 또 다른 중요한 유형의 브로드 캐스트를 제공합니다 주문 방송 (Ordered Broadcast)이라고합니다 주문한 방송을 듣기 위해 계속 지켜봐주십시오 (다음 비디오에서) 그 이 특정 비디오가 끝날 때까지 우리를 데려오고, 잊지 마세요 의견 공유를 좋아하십시오

비디오를 구독하고 채널에 가입하십시오