본문 바로가기

Android/개발 정보

android 버전 14 업데이트로 인한 broadcast 변경

728x90
반응형

기존 registerReceiver를 통해 broadcast 하던 방법이 android 14 버전에서는 변경되어서 수정

 

IntentFilter filter = new IntentFilter();
filter.addAction("com.example.android");
registerReceiver(BroadcastReceiver, filter);

// 이렇게 사용하던 거에서 버전에 따라 다르게 타도록 변경

IntentFilter filter = new IntentFilter();
filter.addAction("com.example.android");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
	registerReceiver(BroadcastReceiver, filter, RECEIVER_EXPORTED);
}else {
	registerReceiver(BroadcastReceiver, filter);
}



registerReceiver에 넘겨줄 때 RECEIVER_EXPORTED 또는 RECEIVER_NOT_EXPORTED 둘 중에 하나를 넣어서 넘겨주어야 함 ( 다른 앱이 이 앱으로 브로드캐스트를 보낼 수 있는지 여부를 명시적으로 해주어야함)*

RECEIVER_EXPORTED - 가능

RECEIVER_NOT_EXPORTED - 불가능

그렇지 않으면 SecurityException 발생

java.lang.SecurityException: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts

 

 

728x90
반응형