728x90
BroadCast Reciever
ex)문자에 반응, 사용자의 요청이나 시스템에서 사건이 발생할 경우 개발자가 만든 코드를 동작 시킬수 있는 실행 단위
안드로이드 8 이상이면 암시적 인텐트를 코드로 등록하고 다른 앱에서 sendBroadcast(intent) 실행
<리시버 앱>
1) BroadcastReceiver 상속 받는 java 파일 생성
file – new – other – broadcastreciever
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String str= "동작";
Toast t1 = Toast.makeText(context,str,Toast.LENGTH_SHORT);
t1.show();
}
}
<리시버 요청하는 앱>
//명시적 인텐트
Intent intent = new Intent();
intent.setClassName("com.example.broadcastreceiver",
"com.example.broadcastreceiver.MyReceiver");
sendBroadcast(intent);
MyReceiver 클래스 불러와서 onReceive 실행
암시적 인텐트 일 경우
1 메니페스트의 리시버에 인텐트 필터 등록
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.broadcastreceiver.br1"/>
</intent-filter>
</receiver>
2
public class MainActivity extends AppCompatActivity {
//브로드캐스트 리시버 참조변수
MyReceiver mr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//안드로이드 8이상이면 인텐트 코드로 등록
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
mr = new MyReceiver();
IntentFilter filter = new IntentFilter("com.example.broadcastreceiver.br1");
registerReceiver(mr,filter);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
if(mr != null){
unregisterReceiver(mr);
mr= null;
}
}
}
}
3 브로드캐스트 요청하는 앱에서
Intent intent = new Intent("com.example.broadcastreceiver.br1");
sendBroadcast(intent);
8.0 이후에도 사용가능
https://developer.android.com/guide/components/broadcast-exceptions.html
'Front-end > Android (안드로이드 앱 개발)' 카테고리의 다른 글
Android Studio , Service & Intent Service & Forground Service (0) | 2020.08.05 |
---|---|
Android Studio , 시스템 메시지 : BroadcastReceiver [문자 메시지 읽기] (0) | 2020.08.02 |
Android Studio , URI (Intent)Activity Action / 공통 인텐트 / 구글 지도, 크롬, 다이얼, 전화걸기, 웹검색 (0) | 2020.07.30 |
Android Studio , Intent 로 객체 전달하기, Parcelable (0) | 2020.07.28 |
Android Studio , Thread & Handler (쓰레드와 핸들러), 오래걸리는 작업, 쓰레드 이용하여 화면에 뿌릴 때 (0) | 2020.07.18 |
댓글