반응형
Android 8 이전에는 broadcast Receiver에서 service를 호출할때
context.startService(new Intent(context, callService.class));
위의 코드로 호출을 하였습니다.
하지만 Android 8부터는 startService가 아닌 startForegroundService를 사용하여야 합니다.
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(i);
} else {
context.startService(i);
}
따라서 위의 부분만 코드를 수정해 주시면됩니다.
참고로 manifests의 권한입니다.
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
manifests의 application부분입니다.
<service android:name=".callService" />
<receiver android:name=".broad" android:exported="false" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
스마트폰이 재부팅 될 때 broad라는 broadcast receiver를 호출하여 callService라는 서비스를 호출합니다.
public class broad extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, callService.class);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(i);
} else {
context.startService(i);
}
}
}
재부팅이 되고나면 위의 broadcastReceiver가 호출이 되고,
callService라는 서비스 클래스가 실행됩니다.
반응형
'Study > Android' 카테고리의 다른 글
android 9(P) notification permission (0) | 2019.04.05 |
---|---|
android P(9) Cleartext HTTP traffic to ..not permitted (0) | 2019.04.05 |
android 8 오레오(Oreo) 알림창(Notification) (0) | 2018.12.05 |
Face detection(얼굴인식) in Android Using Mobile Vision API - 3 (0) | 2018.06.05 |
Face detection(얼굴인식) in Android Using Mobile Vision API - 4 (0) | 2018.06.05 |