15. Broadcast Receiver
브로드 캐스트 리시버는 안드로이드에서 혹은 사용자에 의해서 일어나는 특정한 이벤트를 받아서 일을 처리하는 기능을 제공하는 클래스이다.
(1) 작성법
BroadcastReceiver 클래스를 상속 받고, onReceive() 메소드를 구현한다.
AndroidManifest.xml에 해당 리시버를 등록하고 intent-filter로 원하는 브로드캐스팅 받을 Action을 등록한다.
ex) 만약 SMS가 왔을 경우 리시버의 작동을 원한다면
<receiver android:name="SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
또한 권한 설정이 필요하다.
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
(2) 실행법
안드로이드 자체에서 브로드캐스팅되는 것을 받는 경우는 해당 이벤트 발생시 자동으로 실행이 되지만,
사용자 지정의 이벤트는 직접 sendBroadcast(intent) 메소드를 이용해야만 한다.
사용예제
package com.example.serviceapp;
import android.content.*;
import android.net.*;
import android.os.*;
import android.telephony.*;
import android.widget.*;
public class SmsReiceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
// pdus : SMS 메세지를 가지고 있는 키값
Object[] obj = (Object[])bundle.get("pdus");
SmsMessage[] msgs = new SmsMessage[obj.length];
for (int i = 0; i < obj.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[])obj[i]);
String from = msgs[i].getOriginatingAddress(); //보낸사람
String body = msgs[i].getDisplayMessageBody(); //내용
Toast.makeText(context, from+" : "+body,1).show();
}
// Toast.makeText(context, "문자왔숑!", 0).show();
Intent intent2 = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://androphil.tistory.com"));
intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
// 문자 수신 권한, 인터넷 권한 세팅해야 함.
}
}
'Dev. 안드로이드 > 참고소스' 카테고리의 다른 글
[안드로이드 예제] ContentProvider 이용하기 (0) | 2012.11.29 |
---|---|
[안드로이드 예제] Service & Notification(알림바띄우기) 이용하기 (2) | 2012.11.29 |
[안드로이드 예제] AsyncTask 이용하기 (2) | 2012.10.23 |
[안드로이드 예제] onSaveInstanceState() 메서드에 사용자 정의 클래스를 포함하는 Arraylist 담기 (0) | 2012.10.23 |
[안드로이드 팁] Android 기기별 액정 해상도 알아내기 (0) | 2012.10.22 |