Notice
Recent Posts
Recent Comments
Link
투케이2K
124. (AndroidStudio/android/java) 브로드캐스트 리시버 (BroadcastReceiver) 사용해 채널 알림 메시지 전송 및 수신 확인 본문
Android
124. (AndroidStudio/android/java) 브로드캐스트 리시버 (BroadcastReceiver) 사용해 채널 알림 메시지 전송 및 수신 확인
투케이2K 2021. 4. 28. 14:33/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
[AndroidManifest.xml 파일]
<액티비티 등록 부분>
<activity
android:name=".A_BroadCast"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"/>
<브로드캐스트 등록 부분>
<receiver
android:name=".A_BroadCastReceiver"
android:enabled="true"
android:exported="true"/>
[JAVA 파일 : A_BroadCast]
//========== [클래스 전역 변수 선언] ==========
String send_Data = "kghTV:hello";
A_BroadCastReceiver a_broadCastReceiver; //TODO 브로드캐스트 객체 선언
//========== [브로드캐스트 등록 부분] ==========
public void setBroaCastStart(){
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_BroadCast > setBroaCastStart() 메소드 : 브로드캐스트 등록 실시]");
Log.w("//===========//","================================================");
Log.d("---","---");
try {
//TODO 브로드캐스트 등록
a_broadCastReceiver = new A_BroadCastReceiver();
IntentFilter filter = new IntentFilter();
//filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(A_BroadCastReceiver.kgh_chanel);
filter.addAction(A_BroadCastReceiver.twok_chanel);
registerReceiver(a_broadCastReceiver, filter);
}
catch (Exception e){
e.printStackTrace();
}
}
//========== [브로드캐스트 해제 부분] ==========
public void setBroaCastStop(){
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_BroadCast > setBroaCastStop() 메소드 : 브로드캐스트 해제 실시]");
Log.e("//===========//","================================================");
Log.d("---","---");
try {
//TODO 브로드캐스트 해제
unregisterReceiver(a_broadCastReceiver);
}
catch (Exception e){
e.printStackTrace();
}
}
//========== [브로드캐스트 알림 전송] ==========
public void setBroaCastSend(String send){
try {
//TODO 알림 채널별 전송 실시 (AndroidManifest.xml 에 등록된 채널)
if(send.startsWith("kghTV")){
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_BroadCast > setBroaCastSend() 메소드 : 브로드캐스트 알림 메시지 전송 수행]");
Log.d("","\n"+"[채널 : "+String.valueOf("kghTV")+"]");
Log.d("","\n"+"[내용 : "+String.valueOf(send)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
Intent sendIntent = new Intent(A_BroadCastReceiver.kgh_chanel);
sendIntent.putExtra("broadCastData", send); //TODO 전송할 데이터
sendBroadcast(sendIntent);
}
else if(send.startsWith("twokTV")){
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_BroadCast > setBroaCastSend() 메소드 : 브로드캐스트 알림 메시지 전송 수행]");
Log.d("","\n"+"[채널 : "+String.valueOf("twokTV")+"]");
Log.d("","\n"+"[내용 : "+String.valueOf(send)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
Intent sendIntent = new Intent(A_BroadCastReceiver.twok_chanel);
sendIntent.putExtra("broadCastData", send); //TODO 전송할 데이터
sendBroadcast(sendIntent);
}
else {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_BroadCast > setBroaCastSend() 메소드 : 브로드캐스트 알림 메시지 전송 실패]");
Log.d("","\n"+"[채널 : "+""+"]");
Log.d("","\n"+"[내용 : "+String.valueOf(send)+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
}
}
catch (Exception e){
e.printStackTrace();
}
}
[JAVA 파일 : A_BroadCastReceiver]
package kr.co.two2k.manager;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
public class A_BroadCastReceiver extends BroadcastReceiver {
//========== [클래스 전역 변수 선언 부분] ==========
public static final String kgh_chanel = "kghTV";
public static final String twok_chanel = "twokTV";
String actionName = "";
String actionContent = "";
Context mContext;
//========== [onReceive 메소드를 재정의 (채널 알림 메시지 확인 부분)] ==========
@Override
public void onReceive(Context context, Intent intent) {
try {
mContext = context;
actionName = String.valueOf(intent.getAction());
actionContent = String.valueOf(intent.getStringExtra("broadCastData"));
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_BroadCastReceiver > onReceive() 메소드 : 수신받은 채널 알림 내용 확인]");
Log.d("","\n"+"[채널 : "+String.valueOf(actionName)+"]");
Log.d("","\n"+"[내용 : "+String.valueOf(actionContent)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
//TODO 팝업창 호출 실시
getAlertDialog(mContext, actionName, actionContent,"확인","취소");
}
catch (Exception e){
e.printStackTrace();
}
}
//========== [일회용 AlertDialog 팝업창 호출 메소드 정의 실시] ==========
public void getAlertDialog(Context context, String header, String content, String ok, String no){
try {
//TODO 타이틀 및 내용 표시
String Tittle = header;
String Message = content;
//TODO 버튼 이름 정의
String buttonNo = no;
String buttonYes = ok;
//TODO AlertDialog 팝업창 생성
new AlertDialog.Builder(context)
.setTitle(Tittle) //팝업창 타이틀 지정
.setIcon(R.drawable.tk_app_icon) //팝업창 아이콘 지정
.setMessage(Message) //팝업창 내용 지정
.setCancelable(false) //외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정
.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.show();
}
catch (Exception e){
e.printStackTrace();
}
}
}//TODO 클래스 종료
/* =========================== */
/* =========================== */
[결과 출력]
/* =========================== */
/* =========================== */
[파일 첨부 : 전체 소스코드]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments