BroadcastReceiver 를 등록하기 위해선
extends BroadcastReceiver 된 클래스와
manifest에 receiver에 등록 해주어야 한다.
==========================================================
테스트 하기 위한 Activity
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class BroadCastReceiverActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
Button broadCastTestBtn = new Button(this);
broadCastTestBtn.setText("브로드캐스트 시작");
int llHeight = LinearLayout.LayoutParams.FILL_PARENT;
int llWidth = LinearLayout.LayoutParams.WRAP_CONTENT;
ll.addView(broadCastTestBtn, new LinearLayout.LayoutParams(llHeight, llWidth));
setContentView(ll);
// 테스트 버튼을 눌러서 Logcat를 확인 하면 BroadCastReceiverEx 의 onReceive응답을 확인할수 있다.
broadCastTestBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.e("MrsohnSampleCode", "BroadCastReceiverActivity : onClick");
// manifest의 <action 에 지정된 메시지로 호출
// mrsohn.samplecode.FIRE 는 형식적으로
// 패키지명(mrsohn.samplecode.)+메시지(FIRE:임의적으로) 만들도록 한다.
// 자신에 마음대로 만들어도 상관 없음. (단 manifest 에 등록되어 있어야 할것)
Intent intent = new Intent("mrsohn.samplecode.FIRE");
//Intent로 receiver에 값 전달, getExtra로 값을 전달 한다.
intent.putExtra("type", "warning");
//Broadcast 보내기
sendBroadcast(intent);
//Broadcast 순차적으로 보낼때
//sendOrderedBroadcast(intent, null);
}
});
} }
============================================================================================================================
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
public class BroadCastReceiverEx extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// 수신 된 Intent 처리
Uri data = intent.getData();
String type = intent.getStringExtra("type");
// 수신된 Intent의 값 조건을 확인하여 로직 실행
if (type.equals("warning")) {
Log.e("MroshnSampleCode", "BroadCastReceiverEx : onReceiver");
}
}
}
===========================================================================================================================
Manifest 설정
<!-- BroadcastReceiver 액티비티 -->
<activity android:name.BroadCastReceiverActivity" android:label="" />
<!-- manifest에 receiver 등록하기
클래스명을 적어준다.-->
<receiver android:name=".BroadCastReceiverEx">
<intent-filter>
<action android:name="mrsohn.samplecode.FIRE"></action>
</intent-filter>
</receiver>
** manifest에 등록 하지 않고
자바 코드로 BroadcastReceiver 등록할 수도 있다.
IntentFilter filler =
new IntentFilter("mrsohn.samplecode.FIRE"); //BroadcastReceiver의 action 값
//BroadcastReceiver 클래스
BroadCastReceiverEx r = new BroadCastReceiverEx();
//등록하기
registerReceiver(r, iller);
//해제할 때는
unregisterReceiver(receiver);