브로드캐스트 broadcast : 방송하다. 방송은 항상 송신되고 있다. 필요한 사람만 해당 채널을 수신하면 된다.
브로드캐스트리시버 broadcastReceiver: 방송에 귀 기울이고 있는 수신자 / 필요에 의해 방송도 가능
> 코드레벨
> AndroidManifest
수신하고 싶은 채널에 가입
1. 암시적 브로드 캐스트
더보기
암시적 브로드 캐스트(implicit broadcast) 란?
- 특정 앱을 대상으로 하지 않는 broadcast
- ex) ACTION_BATTERY_CHANGED: 기기 상의 배터리 정보 변경 사실을 알려주기 위해 등록된 모든 리스너로 전송되기 때문에 암시적 브로드 캐스트
(1) 코드에서
val filter = IntentFilter()
filter.addAction(Intent.ACTION_BATTERY_CHANGED)
filter.addAction(Intent.ACTION_SCREEN_ON)
(2) AndrodiManifest.xml 에서
- Android 8.0(API 26)버전부터 암시적브로드캐스트(implicit broadcast)의 경우 AndrodiManifest.xml에서 receiver 를 등록할 수 없다.
> 예외도 있다. developer.android.com/guide/components/broadcast-exceptions
- Android 8.0(API 26) 이전 버전까지는 아래 방법 가능
<receiver android:name=".BatteryBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_CHANGED"/>
<action android:name="android.intent.action.SCREEN_ON"/>
</intent-filter>
</receiver>
developer.android.com/about/versions/oreo/background.html#broadcasts
2. 명시적브로드캐스트
더보기
명시적 브로드 캐스트(explicit broadcast) 란?
- 특정 앱을 대상으로 하는 broadcast
- (1) 코드에서
val filter = IntentFilter()
filter.addAction(Intent.ACTION_BATTERY_CHANGED)
filter.addAction(Intent.ACTION_SCREEN_ON)
(2) AndrodiManifest.xml 에서
<receiver android:name=".CustomBroadcastReceiver">
<intent-filter>
<action android:name="com.gaeng0517.broadcast"/>
</intent-filter>
</receiver>
실제 시청하고 싶은 채널을 고를 때
BroadcastReceiver
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action.equals(Intent.ACTION_BATTERY_CHANGED)) {
val toast = Toast.makeText(context, "Battery status is changed.", Toast.LENGTH_LONG)
toast.show()
} else if (intent?.action.equals(Intent.ACTION_SCREEN_ON)) {
val toast = Toast.makeText(context, "Screen On", Toast.LENGTH_LONG)
toast.show()
}
}
CustomBroadcastReceiver
override fun onReceive(context: Context?, intent: Intent?) {
if(intent?.action.equals("com.gaeng0517.broadcast")) {
Toast.makeText(context, "Customize broadcast!", Toast.LENGTH_LONG).show()
}
}
. 참고
반응형
'Platform > Android' 카테고리의 다른 글
[UI테스트] UIAutomator2.0 (0) | 2020.11.10 |
---|---|
[adb] 명령어 (0) | 2020.11.09 |
[Error] andoirdTest class 를 찾을 수 없을 때 (0) | 2020.11.04 |
[DP, px, ...] (0) | 2020.10.27 |
[GooglePlayStore] 앱 올리기 (0) | 2020.10.20 |