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

 

    

Posted by MR 손
,