Revert "Revert "AOSP/UnifiedEmail - Bumped the targetSdkVersion to 28 (maximum version). Used JobIntentservice API calls to replace context.startService.""

This reverts commit 20e45d84f9dc906034fb535ac35fb2a2ba9dc995.

Reason for revert: Email app needs to target API level 28+ 
Bug: 138276176
Bug: 119499886

Change-Id: I17abf17744dcd59948b40b1137c06e8e429e5adc
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 721ba1b..e34a4fc 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -27,7 +27,7 @@
     <uses-permission android:name="android.permission.NFC" />
 
     <!-- This needs to be present when we are doing unbundled releases. -->
-    <uses-sdk android:targetSdkVersion="24" android:minSdkVersion="14" />
+    <uses-sdk android:targetSdkVersion="28" android:minSdkVersion="14" />
 
     <application
         android:icon="@mipmap/ic_launcher_mail"
@@ -175,7 +175,9 @@
                  android:permission="android.permission.BIND_REMOTEVIEWS"
                  android:exported="false" />
         <service android:name=".MailLogService"/>
-        <service android:name=".browse.EmlTempFileDeletionService" />
+        <service android:name=".browse.EmlTempFileDeletionService"
+                 android:permission="android.permission.BIND_JOB_SERVICE"
+                 android:exported="true" />
 
     </application>
 
diff --git a/src/com/android/mail/MailIntentService.java b/src/com/android/mail/MailIntentService.java
index 8151dfc..db7b99b 100644
--- a/src/com/android/mail/MailIntentService.java
+++ b/src/com/android/mail/MailIntentService.java
@@ -15,11 +15,12 @@
  */
 package com.android.mail;
 
-import android.app.IntentService;
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 
+import androidx.core.app.JobIntentService;
+
 import com.android.mail.analytics.Analytics;
 import com.android.mail.photo.ContactFetcher;
 import com.android.mail.providers.Account;
@@ -34,7 +35,7 @@
 /**
  * A service to handle various intents asynchronously.
  */
-public class MailIntentService extends IntentService {
+public class MailIntentService extends JobIntentService {
     private static final String LOG_TAG = LogTag.getLogTag();
 
     public static final String ACTION_RESEND_NOTIFICATIONS =
@@ -56,16 +57,18 @@
 
     public static final String CONVERSATION_EXTRA = "conversation";
 
+    public static final int JOB_ID = 100;
+
     public MailIntentService() {
-        super("MailIntentService");
+        super();
     }
 
-    protected MailIntentService(final String name) {
-        super(name);
+    public static void enqueueWork(Context context, Intent work) {
+        enqueueWork(context, MailIntentService.class, JOB_ID, work);
     }
 
     @Override
-    protected void onHandleIntent(final Intent intent) {
+    protected void onHandleWork(final Intent intent) {
         // UnifiedEmail does not handle all Intents
 
         LogUtils.v(LOG_TAG, "Handling intent %s", intent);
diff --git a/src/com/android/mail/browse/EmlMessageLoader.java b/src/com/android/mail/browse/EmlMessageLoader.java
index 82fa98f..acf7716 100644
--- a/src/com/android/mail/browse/EmlMessageLoader.java
+++ b/src/com/android/mail/browse/EmlMessageLoader.java
@@ -105,7 +105,7 @@
             intent.setClass(getContext(), EmlTempFileDeletionService.class);
             intent.setData(message.attachmentListUri);
 
-            getContext().startService(intent);
+            EmlTempFileDeletionService.enqueueWork(getContext(), intent);
         }
     }
 }
diff --git a/src/com/android/mail/browse/EmlTempFileDeletionService.java b/src/com/android/mail/browse/EmlTempFileDeletionService.java
index 71a915c..8a772c3 100644
--- a/src/com/android/mail/browse/EmlTempFileDeletionService.java
+++ b/src/com/android/mail/browse/EmlTempFileDeletionService.java
@@ -17,25 +17,33 @@
 
 package com.android.mail.browse;
 
-import android.app.IntentService;
+import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 
+import androidx.core.app.JobIntentService;
+
 /**
  * {@link IntentService} that cleans up temporary files in the cache for the eml viewer.
  */
-public class EmlTempFileDeletionService extends IntentService {
+public class EmlTempFileDeletionService extends JobIntentService {
+
+    public static final int JOB_ID = 101;
 
     public EmlTempFileDeletionService() {
-        super("EmlTempFileDeletionService");
+        super();
     }
 
     public EmlTempFileDeletionService(String name) {
-        super(name);
+        super();
+    }
+
+    public static void enqueueWork(Context context, Intent work) {
+        enqueueWork(context, EmlTempFileDeletionService.class, JOB_ID, work);
     }
 
     @Override
-    protected void onHandleIntent(Intent intent) {
+    protected void onHandleWork(Intent intent) {
         final String action = intent.getAction();
         if (Intent.ACTION_DELETE.equals(action)) {
             final Uri uri = intent.getData();