summaryrefslogtreecommitdiff
path: root/java/com/android/voicemail/impl/DeviceProvisionedJobService.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/voicemail/impl/DeviceProvisionedJobService.java')
-rw-r--r--java/com/android/voicemail/impl/DeviceProvisionedJobService.java33
1 files changed, 20 insertions, 13 deletions
diff --git a/java/com/android/voicemail/impl/DeviceProvisionedJobService.java b/java/com/android/voicemail/impl/DeviceProvisionedJobService.java
index a0b999d23..20993d051 100644
--- a/java/com/android/voicemail/impl/DeviceProvisionedJobService.java
+++ b/java/com/android/voicemail/impl/DeviceProvisionedJobService.java
@@ -29,6 +29,7 @@ import android.content.Intent;
import android.os.Build.VERSION_CODES;
import android.provider.Settings;
import android.provider.Settings.Global;
+import android.support.annotation.VisibleForTesting;
import android.telecom.PhoneAccountHandle;
import com.android.dialer.constants.ScheduledJobIds;
@@ -39,29 +40,25 @@ import com.android.dialer.constants.ScheduledJobIds;
@TargetApi(VERSION_CODES.O)
public class DeviceProvisionedJobService extends JobService {
- private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "EXTRA_PHONE_ACCOUNT_HANDLE";
+ @VisibleForTesting static final String EXTRA_PHONE_ACCOUNT_HANDLE = "EXTRA_PHONE_ACCOUNT_HANDLE";
/** Queue the phone account to be reactivated after the setup wizard has completed. */
public static void activateAfterProvisioned(
Context context, PhoneAccountHandle phoneAccountHandle) {
- JobInfo jobInfo =
- new JobInfo.Builder(
- ScheduledJobIds.VVM_DEVICE_PROVISIONED_JOB,
- new ComponentName(context, DeviceProvisionedJobService.class))
- .addTriggerContentUri(
- new TriggerContentUri(Global.getUriFor(Global.DEVICE_PROVISIONED), 0))
- // VVM activation must be run as soon as possible to avoid voicemail loss
- .setTriggerContentMaxDelay(0)
- .build();
-
Intent intent = new Intent();
intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
- context.getSystemService(JobScheduler.class).enqueue(jobInfo, new JobWorkItem(intent));
+ context
+ .getSystemService(JobScheduler.class)
+ .enqueue(createJobInfo(context), new JobWorkItem(intent));
}
@Override
public boolean onStartJob(JobParameters params) {
- Assert.isTrue(isDeviceProvisioned());
+ if (!isDeviceProvisioned()) {
+ VvmLog.i("DeviceProvisionedJobService.onStartJob", "device not provisioned, rescheduling");
+ getSystemService(JobScheduler.class).schedule(createJobInfo(this));
+ return false; // job not running in background
+ }
VvmLog.i("DeviceProvisionedJobService.onStartJob", "device provisioned");
for (JobWorkItem item = params.dequeueWork(); item != null; item = params.dequeueWork()) {
PhoneAccountHandle phoneAccountHandle =
@@ -82,4 +79,14 @@ public class DeviceProvisionedJobService extends JobService {
private boolean isDeviceProvisioned() {
return Settings.Global.getInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0) == 1;
}
+
+ private static JobInfo createJobInfo(Context context) {
+ return new JobInfo.Builder(
+ ScheduledJobIds.VVM_DEVICE_PROVISIONED_JOB,
+ new ComponentName(context, DeviceProvisionedJobService.class))
+ .addTriggerContentUri(new TriggerContentUri(Global.getUriFor(Global.DEVICE_PROVISIONED), 0))
+ // VVM activation must be run as soon as possible to avoid voicemail loss
+ .setTriggerContentMaxDelay(0)
+ .build();
+ }
}