Notice
Recent Posts
Recent Comments
Today
Total
05-04 00:14
Archives
관리 메뉴

Jeongchul Kim

안드로이드 브로드캐스트 리시버 본문

Android

안드로이드 브로드캐스트 리시버

김 정출 2016. 3. 23. 15:30


안드로이드 브로드캐스트 리시버

방송과 브로드캐스트 리시버

여기서의 방송이란 각종 앱에서 발생하는 이벤트이다.

시스템 앱을 예로 화면이 켜지거나, 전화가 걸리거나, 파일을 다운로드 받았다는 등이다.

Broadcast recevier는 시스템이 방송한 정보를 수신할 수 있는 컴포넌트이다.

Broadcast 정적 등록 -> Manifest


MainActivity.java


package com.example.broadcasttest;

import android.app.Activity;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button btn = (Button)findViewById(R.id.btn);

btn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent();

intent.setAction("FILE_DOWN");

intent.putExtra("FILE_NAME","superdrioid.png");

sendBroadcast(intent);

}

});

}

@Override

protected void onDestroy() {

super.onDestroy();

unregisterReceiver(rcv);

}

}


BroadcastSideReceiver.java

package com.example.broadcasttest;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.widget.Toast;

public class BroadcaseSideRecevier extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

String name = intent.getStringExtra("FILE_NAME");

Toast.makeText(context,name,Toast.LENGTH_LONG).show();

}

}


AndroidManifest.xml



<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.broadcasttest"

android:versionCode="1"

android:versionName="1.0" >

  <uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="21" />

  <application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

      <activity

android:name=".MainActivity"

android:label="@string/app_name" >

          <intent-filter>

              <action android:name="android.intent.action.MAIN" />

              <category android:name="android.intent.category.LAUNCHER" />

          </intent-filter>

      </activity>

  </application>

</manifest>




Broadcast 동적 등록 -> java 파일 내에서

package com.example.broadcasttest;

import android.app.Activity;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

public class MainActivity extends Activity {

BroadcastSideRecevier rcv;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/** 동적 등록*/

rcv = new BroadcastSideRecevier();

IntentFilter filter = new IntentFilter();

filter.addAction("FILE_DOWN");

registerReceiver(rcv, filter);

Button btn = (Button)findViewById(R.id.btn);

btn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent();

intent.setAction("FILE_DOWN");

intent.putExtra("FILE_NAME","superdrioid.png");

sendBroadcast(intent);

}

});

}

@Override

protected void onDestroy() {

super.onDestroy();

unregisterReceiver(rcv);

}

}





Comments