android
[안드로이드/android] 클래스 안에 브로드캐스트 클래스를 만들었을 때 Manifest 지정하는 법
hrniin
2022. 9. 19. 20:46
728x90
<receiver android:name="com.example.패키지명.MainActivity$BluetoothDataReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="액션명" />
</intent-filter>
</receiver>
MainActivity 클래스 안에 BluetoothDataReceiver라는 BroadcastReceiver 클래스를 넣었다고 할 때, 위와 같이 지정해주면 된다.
보통 액션명은 com.example.패키지명.액션설명 이렇게 많이들 쓴다. "RECEIVED_DATA"처럼 액션에 대한 설명만 간단히 적어도 문제는 없다.
서비스 클래스의 변수가 변경될 때, MainActivity UI를 바꾸는 브로드캐스트를 바꾸려고 했다. 그런데 MainActivity 클래스 내에서만 액티비티의 ui를 변경할 수 있으므로(setText 등) 액티비티 안에 브로드캐스트의 클래스를 집어넣었다. (동적으로 브로드캐스트를 선언해도 되지만, 그럴 경우 액션을 발생시키는 클래스가 다른 클래스라면 LocalBroadcastManager를 사용해야 한다.)
이때 브로드캐스트 클래스는 public static이어야 한다. 당연히 클래스 안에서 선언한 멤버변수를 제외한 모든 변수, 메소드들도 static이어야 한다.
728x90