안드로이드 앱 개발 중 꼭 한번 정도씩은 필요한 기능 중 한가지가 바로 내 폰이 부팅 되는 시점에 내가 만든 앱을 실행 시키는 것입니다.
Android 앱의 Life Cycle 을 아시는 개발자라면 잘 아시겠지만 내가 만든 앱이 동작을 하기 위해서는 사용자가 직접 실행을 시켜 줘야만 합니다.
하지만 경우에 따라서는 사용자 승인 하에 앱이 단 한번이라도 실행 되게 되면 그 이후에는 사용자가 신경 쓰지 않아도 단말이 재부팅 되더라도 실행 되어야 하는 경우가 있습니다.
예를 들자면 헬스 보조 앱이나 알람 같은 경우가 있습니다.
이와 같은 경우를 위해 Android 폰 부팅 시 내가 만들 App을 실행 시키는 방법에 대한 내용을 정리 합니다.
1. 우선 BroadcastReceiver 를 상속 받는 MyReceiver 클라스를 하나 생성하여 모바일 단말의 부팅이 완료된 경우의 액션을 정의 합니다.
여기서 android.intent.action.BOOT_COMPLETED 메세지는 모바일 단말의 부팅이 완료 되었다는 메세지 이며 이 메세지를 받았을 경우 MainActivity 를 실행 시켜 주는 기능을 합니다.
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals("android.intent.action.BOOT_COMPLETED")){
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
2. AndroidManifest.xml 에 RECEIVE_BOOT_COMPLETED 권한을 추가 합니다.
receiver 에는 생성한 클라스명인 MyReceiver 를 등록 하고, intent-filter 에 우리가 사용할 BOOT_COMPLETED 메세지를 추가 해줍니다.
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
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>
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
3. MainActivity 클라스에 본인이 원하는 동작을 구현하고 앱을 빌드하면 개발 완료입니다.
이제 앱을 실행 하면 리시버가 등록이 되고 앱을 종료 하더라도 단말이 재부팅 되면 broadcast receiver 가 BOOT_COMPLETED 메세지를 받아 내 app 의 MainActivity 를 실행 하게 되면 정의한 동작을 수행하게 됩니다.
'Android (Java)' 카테고리의 다른 글
Google Play 개발자 정책 위반 경고: 조치 필요 (475) | 2017.02.08 |
---|---|
[안드로이드 코딩_002] 안드로이드 역사 (764) | 2017.02.07 |
[안드로이드 코딩_001] 안드로이드 이해 및 개발 가이드 (490) | 2017.02.06 |
Android Studio 단축키 및 eclipse 단축키 사용하기 (1220) | 2017.01.30 |
[안드로이드 코딩] 안드로이드 앱 사용자 승인 받기 (Android Runtime Permission) (1163) | 2017.01.26 |