diff --git a/android/build.gradle b/android/build.gradle index 35c3988..73a3374 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -11,12 +11,12 @@ buildscript { apply plugin: 'com.android.library' android { - compileSdkVersion 23 - buildToolsVersion "25.0.2" + compileSdkVersion 27 + buildToolsVersion "25.0.3" defaultConfig { minSdkVersion 16 - targetSdkVersion 22 + targetSdkVersion 27 versionCode 1 versionName "1.0" } diff --git a/android/src/main/java/com/jamesisaac/rnbackgroundtask/HeadlessTaskService.java b/android/src/main/java/com/jamesisaac/rnbackgroundtask/HeadlessTaskService.java index 79a9083..ef35c44 100644 --- a/android/src/main/java/com/jamesisaac/rnbackgroundtask/HeadlessTaskService.java +++ b/android/src/main/java/com/jamesisaac/rnbackgroundtask/HeadlessTaskService.java @@ -9,10 +9,34 @@ import com.facebook.react.jstasks.HeadlessJsTaskConfig; import com.facebook.react.HeadlessJsTaskService; import java.util.concurrent.TimeUnit; +import android.annotation.SuppressLint; +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.content.Context; public class HeadlessTaskService extends HeadlessJsTaskService { private static final String TAG = "BackgroundTask"; + @Override + @SuppressLint("WrongConstant") + public void onCreate() { + super.onCreate(); + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + Context mContext = this.getApplicationContext(); + String CHANNEL_ID = "Background job"; + NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_ID, NotificationManager.IMPORTANCE_LOW); + ((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel); + + Notification notification = + new Notification.Builder(mContext, CHANNEL_ID) + .setContentTitle("Running background job") + .setContentText(mContext.getPackageName()) + .build(); + startForeground(1, notification); + } + } + @Override protected @Nullable HeadlessJsTaskConfig getTaskConfig(Intent intent) { Bundle extras = intent.getExtras(); diff --git a/android/src/main/java/com/jamesisaac/rnbackgroundtask/RNJob.java b/android/src/main/java/com/jamesisaac/rnbackgroundtask/RNJob.java index 20cb0ab..5f670fe 100644 --- a/android/src/main/java/com/jamesisaac/rnbackgroundtask/RNJob.java +++ b/android/src/main/java/com/jamesisaac/rnbackgroundtask/RNJob.java @@ -7,6 +7,7 @@ import android.util.Log; import com.evernote.android.job.util.support.PersistableBundleCompat; import com.evernote.android.job.Job; +import android.os.Build; /** * The single task which this library is able to schedule. @@ -32,8 +33,12 @@ protected Result onRunJob(Params params) { Context context = getContext().getApplicationContext(); Intent service = new Intent(context, HeadlessTaskService.class); service.putExtras(headlessExtras); - context.startService(service); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + context.startForegroundService(service); + } else { + context.startService(service); + } return Result.SUCCESS; } -} \ No newline at end of file +}