728x90
1. 권한 설정
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
2. BroadcastReceiver 파일 생성
public class SystemReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//메니페스트의 인텐트 필터를 intent가 받는다.
//안드로이드 os가 리시버를 찾기 위해 사용했던 이름을 추출한다.
String action = intent.getAction();
//리시버의 이름으로 분기한다.
switch (action)
{
case "android.intent.action.BOOT_COMPLETED" :
Toast.makeText(context,"부팅완료",Toast.LENGTH_SHORT).show();
break;
case "android.provider.Telephony.SMS_RECEIVED" :
//bundle : 인텐트의 객체들을 한번에 추출, 문자 메시지 정보를 가지고 있는 객체를 추출
Bundle bundle = intent.getExtras();
if(bundle != null){
//번들에서 문자 메시지 정보 객체를 추출한다.
Object[] obj = (Object [])bundle.get("pdus");
//문자 메시지 정보 객체를 이용해 SmsMessage 객체를 생성
SmsMessage[] msgs = new SmsMessage[obj.length];
for(int i=0; i < obj.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])obj[i]);
}
//문자 메시지 정보를 추출한다.
for(SmsMessage msg : msgs){
String number = msg.getOriginatingAddress();
String str = msg.getMessageBody();
String toastMsg = number + ": " + str;
Toast.makeText(context,toastMsg,Toast.LENGTH_LONG).show();
}
}
break;
}
}
}
3. 인텐트 필터
<receiver
android:name=".SystemReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
4. 메인은 권한 허락 설정 하기
5. test
문자 메시지로 온 값을
토스트 메시지로 출력 성공
'Front-end > Android (안드로이드 앱 개발)' 카테고리의 다른 글
Android Studio , ListFragment & DialogFragment (0) | 2020.08.07 |
---|---|
Android Studio , Service & Intent Service & Forground Service (0) | 2020.08.05 |
Android Studio , BroadCast Reciever 브로드캐스트 리시버 (0) | 2020.08.01 |
Android Studio , URI (Intent)Activity Action / 공통 인텐트 / 구글 지도, 크롬, 다이얼, 전화걸기, 웹검색 (0) | 2020.07.30 |
Android Studio , Intent 로 객체 전달하기, Parcelable (0) | 2020.07.28 |
댓글