diff options
Diffstat (limited to 'provider_src')
4 files changed, 31 insertions, 93 deletions
diff --git a/provider_src/com/android/email/EmailIntentService.java b/provider_src/com/android/email/EmailIntentService.java index 5924c90ce..0c6d76178 100644 --- a/provider_src/com/android/email/EmailIntentService.java +++ b/provider_src/com/android/email/EmailIntentService.java @@ -29,12 +29,12 @@ public class EmailIntentService extends MailIntentService { private static final String LOG_TAG = LogTag.getLogTag(); public EmailIntentService() { - super(); + super("EmailIntentService"); } @Override - protected void onHandleWork(final Intent intent) { - super.onHandleWork(intent); + protected void onHandleIntent(final Intent intent) { + super.onHandleIntent(intent); if (UIProvider.ACTION_UPDATE_NOTIFICATION.equals(intent.getAction())) { final NotificationController nc = diff --git a/provider_src/com/android/email/provider/EmailProvider.java b/provider_src/com/android/email/provider/EmailProvider.java index aadc51b0b..00d608f30 100644 --- a/provider_src/com/android/email/provider/EmailProvider.java +++ b/provider_src/com/android/email/provider/EmailProvider.java @@ -1346,10 +1346,8 @@ public class EmailProvider extends ContentProvider c = uiQuery(match, uri, projection, unseenOnly); return c; case UI_FOLDERS: - // TODO(rtenneti): Enable notifications. - // c = uiFolders(uri, projection); - // return c; - return null; + c = uiFolders(uri, projection); + return c; case UI_FOLDER_LOAD_MORE: c = uiFolderLoadMore(getMailbox(uri)); return c; @@ -1541,8 +1539,7 @@ public class EmailProvider extends ContentProvider } if ((c != null) && !isTemporary()) { - // TODO(rtenneti): Enable notifications. - // c.setNotificationUri(getContext().getContentResolver(), uri); + c.setNotificationUri(getContext().getContentResolver(), uri); } return c; } @@ -2549,8 +2546,7 @@ public class EmailProvider extends ContentProvider final Set<Uri> notifications = getBatchNotificationsSet(); setBatchNotificationsSet(null); for (final Uri uri : notifications) { - // TODO(rtenneti): Enable notifications. - // context.getContentResolver().notifyChange(uri, null); + context.getContentResolver().notifyChange(uri, null); } } } @@ -2566,8 +2562,7 @@ public class EmailProvider extends ContentProvider @Override public void attachmentChanged(final Context context, final long id, final int flags) { // The default implementation delegates to the real service. - // TODO(rtenneti): Enable AttachmentService. - // AttachmentService.attachmentChanged(context, id, flags); + AttachmentService.attachmentChanged(context, id, flags); } }; private EmailAttachmentService mAttachmentService = DEFAULT_ATTACHMENT_SERVICE; @@ -3981,8 +3976,7 @@ public class EmailProvider extends ContentProvider } finally { accountIdCursor.close(); } - // TODO(rtenneti): Enable notifications. - // mc.setNotificationUri(context.getContentResolver(), UIPROVIDER_ALL_ACCOUNTS_NOTIFIER); + mc.setNotificationUri(context.getContentResolver(), UIPROVIDER_ALL_ACCOUNTS_NOTIFIER); return mc; } @@ -4643,9 +4637,8 @@ public class EmailProvider extends ContentProvider // Return real and virtual mailboxes alike final Cursor rawc = db.rawQuery(genQueryAccountAllMailboxes(uiProjection), new String[] {id}); - // TODO(rtenneti): Enable notifications. - // rawc.setNotificationUri(context.getContentResolver(), notifyUri); - // vc.setNotificationUri(context.getContentResolver(), notifyUri); + rawc.setNotificationUri(context.getContentResolver(), notifyUri); + vc.setNotificationUri(context.getContentResolver(), notifyUri); if (rawc.getCount() > 0) { c = new MergeCursor(new Cursor[]{rawc, vc}); } else { @@ -4786,8 +4779,7 @@ public class EmailProvider extends ContentProvider break; } if (notifyUri != null) { - // TODO(rtenneti): Enable notifications. - // c.setNotificationUri(resolver, notifyUri); + c.setNotificationUri(resolver, notifyUri); } return c; } @@ -5242,8 +5234,7 @@ public class EmailProvider extends ContentProvider mailPrefs.setConversationOverviewMode(overviewMode); } - // TODO(rtenneti): Enable notifications. - // c.getContentResolver().notifyChange(UIPROVIDER_ALL_ACCOUNTS_NOTIFIER, null, false); + c.getContentResolver().notifyChange(UIPROVIDER_ALL_ACCOUNTS_NOTIFIER, null, false); return 1; } @@ -5720,8 +5711,7 @@ public class EmailProvider extends ContentProvider if (batchNotifications != null) { batchNotifications.add(notifyUri); } else { - // TODO(rtenneti): Enable notifications. - // getContext().getContentResolver().notifyChange(notifyUri, null); + getContext().getContentResolver().notifyChange(notifyUri, null); } } @@ -6367,7 +6357,7 @@ public class EmailProvider extends ContentProvider // Start/stop the various services depending on whether there are any accounts // TODO: Make sure that the AttachmentService responds to this request as it // expects a particular set of data in the intents that it receives or it ignores. - startOrStopService(enabled, context); + startOrStopService(enabled, context, new Intent(context, AttachmentService.class)); final NotificationController controller = NotificationControllerCreatorHolder.getInstance(context); @@ -6377,16 +6367,16 @@ public class EmailProvider extends ContentProvider } /** - * Starts or stops the attachment service as necessary. - * + * Starts or stops the service as necessary. * @param enabled If {@code true}, the service will be started. Otherwise, it will be stopped. * @param context The context to manage the service with. + * @param intent The intent of the service to be managed. */ - private static void startOrStopService(boolean enabled, Context context) { + private static void startOrStopService(boolean enabled, Context context, Intent intent) { if (enabled) { - AttachmentService.startWithoutSpecificAttachmentChange(context); + context.startService(intent); } else { - AttachmentService.stop(context); + context.stopService(intent); } } diff --git a/provider_src/com/android/email/service/AttachmentService.java b/provider_src/com/android/email/service/AttachmentService.java index 1a628f799..632104931 100644 --- a/provider_src/com/android/email/service/AttachmentService.java +++ b/provider_src/com/android/email/service/AttachmentService.java @@ -27,20 +27,15 @@ import android.content.Intent; import android.database.Cursor; import android.net.ConnectivityManager; import android.net.Uri; -import android.os.Build.VERSION_CODES; import android.os.IBinder; import android.os.RemoteException; import android.os.SystemClock; import android.text.format.DateUtils; -import androidx.core.os.BuildCompat; - import com.android.email.AttachmentInfo; import com.android.email.EmailConnectivityManager; -import com.android.email.EmailNotificationController; import com.android.email.NotificationControllerCreatorHolder; import com.android.email.NotificationController; -import com.android.email.R; import com.android.emailcommon.provider.Account; import com.android.emailcommon.provider.EmailContent; import com.android.emailcommon.provider.EmailContent.Attachment; @@ -126,10 +121,6 @@ public class AttachmentService extends Service implements Runnable { // Signify that we are being shut down & destroyed. private volatile boolean mStop = false; - // Indicates whether this service is currently running. Currently, only used for Android O+ to - // decide whether to call startForegroundService or startService in start method. - private static volatile boolean isRunning = false; - EmailConnectivityManager mConnectivityManager; // Helper class that keeps track of in progress downloads to make sure that they @@ -595,36 +586,7 @@ public class AttachmentService extends Service implements Runnable { debugTrace("Calling startService with extras %d & %d", id, flags); intent.putExtra(EXTRA_ATTACHMENT_ID, id); intent.putExtra(EXTRA_ATTACHMENT_FLAGS, flags); - start(context, intent); - } - - public static void startWithoutSpecificAttachmentChange(Context context) { - LogUtils.d(LOG_TAG, "Going to start AttachmentService without specifying an attachment."); - - Intent intent = new Intent(context, AttachmentService.class); - start(context, intent); - } - - /** - * Starts running attachment service. - * - * @param intent an intent set to run AttachmentService class - */ - public static void start(Context context, Intent intent) { - // TODO(rtenneti): Enable notifications. - // if (context.getApplicationInfo().targetSdkVersion >= android.os.Build.VERSION_CODES.O && - // !isRunning) { - // LogUtils.i(LOG_TAG, "startForegroundService"); - // context.startForegroundService(intent); - // } else { - // LogUtils.i(LOG_TAG, "startService"); - // context.startService(intent); - // } - } - - public static void stop(Context context) { - Intent intent = new Intent(context, AttachmentService.class); - context.stopService(intent); + context.startService(intent); } /** @@ -660,16 +622,6 @@ public class AttachmentService extends Service implements Runnable { */ @Override public void onCreate() { - isRunning = true; - if (getApplicationInfo().targetSdkVersion >= android.os.Build.VERSION_CODES.O) { - LogUtils.i(LOG_TAG, "startForeground"); - startForeground( - EmailNotificationController.NOTIFICATION_ID_ONGOING_ATTACHMENT, - EmailNotificationController.getOngoingDownloadNotification( - getApplicationContext(), - getApplicationContext().getString( - R.string.notification_downloading_attachments_title))); - } // Start up our service thread. new Thread(this, "AttachmentService").start(); } @@ -697,7 +649,6 @@ public class AttachmentService extends Service implements Runnable { mConnectivityManager.stopWait(); mConnectivityManager = null; } - isRunning = false; } /** diff --git a/provider_src/com/android/email/service/EmailBroadcastProcessorService.java b/provider_src/com/android/email/service/EmailBroadcastProcessorService.java index 5d264f007..7aa54673e 100644 --- a/provider_src/com/android/email/service/EmailBroadcastProcessorService.java +++ b/provider_src/com/android/email/service/EmailBroadcastProcessorService.java @@ -17,6 +17,7 @@ package com.android.email.service; import android.accounts.AccountManager; +import android.app.IntentService; import android.content.ComponentName; import android.content.ContentResolver; import android.content.ContentUris; @@ -33,8 +34,6 @@ import android.provider.ContactsContract; import android.text.TextUtils; import android.text.format.DateUtils; -import androidx.core.app.JobIntentService; - import com.android.email.EmailIntentService; import com.android.email.Preferences; import com.android.email.R; @@ -70,9 +69,7 @@ import java.util.Set; * This also handles the DeviceAdminReceiver in SecurityPolicy, because it is also * a BroadcastReceiver and requires the same processing semantics. */ -public class EmailBroadcastProcessorService extends JobIntentService { - public static final int JOB_ID = 200; - +public class EmailBroadcastProcessorService extends IntentService { // Action used for BroadcastReceiver entry point private static final String ACTION_BROADCAST = "broadcast_receiver"; @@ -84,11 +81,11 @@ public class EmailBroadcastProcessorService extends JobIntentService { private static final String ACTION_UPGRADE_BROADCAST = "upgrade_broadcast_receiver"; public EmailBroadcastProcessorService() { - super(); - } + // Class name will be the thread name. + super(EmailBroadcastProcessorService.class.getName()); - public static void enqueueWork(Context context, Intent work) { - enqueueWork(context, EmailBroadcastProcessorService.class, JOB_ID, work); + // Intent should be redelivered if the process gets killed before completing the job. + setIntentRedelivery(true); } /** @@ -98,13 +95,13 @@ public class EmailBroadcastProcessorService extends JobIntentService { Intent i = new Intent(context, EmailBroadcastProcessorService.class); i.setAction(ACTION_BROADCAST); i.putExtra(Intent.EXTRA_INTENT, broadcastIntent); - EmailBroadcastProcessorService.enqueueWork(context, i); + context.startService(i); } public static void processUpgradeBroadcastIntent(final Context context) { final Intent i = new Intent(context, EmailBroadcastProcessorService.class); i.setAction(ACTION_UPGRADE_BROADCAST); - EmailBroadcastProcessorService.enqueueWork(context, i); + context.startService(i); } /** @@ -116,11 +113,11 @@ public class EmailBroadcastProcessorService extends JobIntentService { Intent i = new Intent(context, EmailBroadcastProcessorService.class); i.setAction(ACTION_DEVICE_POLICY_ADMIN); i.putExtra(EXTRA_DEVICE_POLICY_ADMIN, message); - EmailBroadcastProcessorService.enqueueWork(context, i); + context.startService(i); } @Override - protected void onHandleWork(Intent intent) { + protected void onHandleIntent(Intent intent) { // This method is called on a worker thread. // Dispatch from entry point |