관리 메뉴

드럼치는 프로그래머

[안드로이드] BroadcastReceiver 등록 본문

★─Programing/☆─Android

[안드로이드] BroadcastReceiver 등록

드럼치는한동이 2013. 5. 21. 10:01

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);

 

 

[출처] http://mrsohn.tistory.com/394

Comments