본문 바로가기
안드로이드 웹앱 콘테츠 개발자 양성(국비지원)/Activity

Android Studio(기능) Broadcast Receiver 2

by 차누감 2019. 10. 7.

◎4대 주요 구성요소

1) Activity - 화면 담당

2) Service - 백그라운드 동작

3) Broadcast Receiver - 휴대폰 정보

4) Content Provider

 

예제) 앱을 하나 만들고, 그 앱을 1번 실행 시켰을때, 재부팅 마다 앱의 화면이 자동으로 나오도록 할 수 있다.

 

메인 액티비티를 만들고, 바로 BroadcastReceiver를 만들자.

이렇게만 해주면 앱을 실행하고, 휴대폰을 재부팅하면 토스트가 자동으로 뜰 것이다.

(MainActivity.java, activity_main.xml은 아무것도 추가 하지 않았다.)

 

이제 아래 코드를 추가하면, 재부팅시 액티비티가 뜬다.

 

BootingReceiver.java 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
import android.content.BroadcastReceiver;
import android.content.Context;
 
public class BootingReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // N(누가)버전 부터는 앱을 설치한 후 적어도 1회 직접 사용자가 런처화면에서 앱 아이콘을 클릭하여 실행한 앱만 BOOT_COMPLETE를 받을 수 있음.
        Toast.makeText(context, "BootingReceiver received!!", Toast.LENGTH_SHORT).show();
 
        String action =intent.getAction();
        if(action.equals(Intent.ACTION_BOOT_COMPLETED)){
 
            //이 앱에 있는 MainActivity를 실행
            Intent i=new Intent(context,MainActivity.class);
            //새로운 Activity를 기존 Activity가 아닌 곳에서
            //실행하려면.. 새로운 Task에서 실행되도록..
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 
            context.startActivity(i);
        }
 
    }
}
 
 
 

AndroidManifest.xml 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0" encoding="utf-8"?>
 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
 
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
<!--oreo 버전 부터 반드시 receiver태그문에 속성으로 퍼미션 속성을 써야함-->
        <receiver android:name=".BootingReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
 
<!--             문자메세지 방송 인텐트 액션   -->
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
<!--             화면이 꺼졌다가 켜졌을 때-->
                <action android:name="android.intent.action.SCREEM_ON"/>
 
                <action android:name="aaa"/>
            </intent-filter>
        </receiver>
 
    </application>
 
</manifest>
 
 

이런 기능적 부분은 항상 달라지기 때문에 검색해서, 변경된 코드들을 찾아보자.

댓글