오늘은 이전 포스팅에 이어서 Intentfilter를 사용하여 브로드캐스트를 전송하고 수신하는 방법에 대해 알아보도록 하겠습니다.
또한 수신할 대상 패키지를 미리 지정해서 전송하는 방법도 알아보겠습니다.
Intentfilter를 사용한 Broadcast 전송 및 수신 예제
IntentFilter를 사용하여 Broadcast를 전송하고 수신할 수 있습니다.
아래는 그 예제입니다.
// Broadcast 전송
Intent intent = new Intent();
intent.setAction("com.example.myapp.MY_ACTION");
intent.putExtra("message", "Hello, world!");
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.myapp.MY_ACTION");
registerReceiver(new MyBroadcastReceiver(), intentFilter);
sendBroadcast(intent);
// Broadcast 수신
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("com.example.myapp.MY_ACTION")) {
String message = intent.getStringExtra("message");
Toast.makeText(context, "Received message: " + message, Toast.LENGTH_SHORT).show();
}
}
}
위의 예제에서는 Broadcast 전송 시에 IntentFilter를 사용하여 특정 액션을 필터로 등록하고 있습니다.
그리고 BroadcastReceiver에서도 동일한 액션을 수신할 수 있도록 IntentFilter를 등록하고 있습니다.
수신 패키지를 지정하여 Broadcast 전송 예제
Broadcast를 특정 패키지에만 전송하고자 할 때는 setPackage() 메서드를 사용하여 패키지를 지정할 수 있습니다.
아래는 그 예제입니다.
Intent intent = new Intent();
intent.setAction("com.example.myapp.MY_ACTION");
intent.putExtra("message", "Hello, world!");
intent.setPackage("com.example.anotherapp");
sendBroadcast(intent);
위의 예제에서는 "com.example.anotherapp" 패키지에만 Broadcast를 전송하고 있습니다.
해당 패키지를 가진 애플리케이션에서만 Broadcast를 수신할 수 있습니다.
Broadcast를 통해 양방향 통신하기 예제
BroadcastReceiver를 사용하여 양방향 통신을 구현할 수 있습니다. 아래는 그 예제입니다.
// Broadcast 전송
Intent requestIntent = new Intent();
requestIntent.setAction("com.example.myapp.REQUEST_ACTION");
requestIntent.putExtra("request_message", "Hello, server!");
sendBroadcast(requestIntent);
// Broadcast 수신
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("com.example.myapp.REQUEST_ACTION")) {
String requestMessage = intent.getStringExtra("request_message");
// 서버로부터 응답 받기 위해 Broadcast 전송
Intent responseIntent = new Intent();
responseIntent.setAction("com.example.myapp.RESPONSE_ACTION");
responseIntent.putExtra("response_message", "Hello, client!");
sendBroadcast(responseIntent);
} else if (action.equals("com.example.myapp.RESPONSE_ACTION")) {
String responseMessage = intent.getStringExtra("response_message");
Toast.makeText(context, "Received response: " + responseMessage, Toast.LENGTH_SHORT).show();
}
}
}
위의 예제에서는 "com.example.myapp.REQUEST_ACTION" 액션을 가진 Broadcast를 전송하고 있습니다.
이를 수신한 BroadcastReceiver에서는 "com.example.myapp.RESPONSE_ACTION" 액션을 가진 Broadcast를 다시 전송하여 양방향 통신을 구현하고 있습니다.
BroadcastReceiver를 사용하면 안드로이드 애플리케이션에서 메시지를 주고받을 수 있으며, 다른 애플리케이션과의 통신이 가능해집니다.
이를 통해 애플리케이션 개발에 다양한 기능과 유연성을 제공할 수 있습니다.