Fix a strict mode violation in SystemUpdatePrefController

Change-Id: I4770b878b6f69318f08f8974c5c4d2690c5611d4
Bug: 78626509
Test: robotests
This commit is contained in:
Fan Zhang
2018-05-09 15:42:00 -07:00
parent 6600bbaf10
commit 93d3b5174d
5 changed files with 71 additions and 28 deletions

View File

@@ -35,6 +35,9 @@ import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class SystemUpdatePreferenceController extends BasePreferenceController {
private static final String TAG = "SysUpdatePrefContr";
@@ -84,9 +87,19 @@ public class SystemUpdatePreferenceController extends BasePreferenceController {
@Override
public CharSequence getSummary() {
final Bundle updateInfo = mUpdateManager.retrieveSystemUpdateInfo();
CharSequence summary = mContext.getString(R.string.android_version_summary,
Build.VERSION.RELEASE);
final FutureTask<Bundle> bundleFutureTask = new FutureTask<>(
// Put the API call in a future to avoid StrictMode violation.
() -> mUpdateManager.retrieveSystemUpdateInfo());
final Bundle updateInfo;
try {
bundleFutureTask.run();
updateInfo = bundleFutureTask.get();
} catch (InterruptedException | ExecutionException e) {
Log.w(TAG, "Error getting system update info.");
return summary;
}
switch (updateInfo.getInt(SystemUpdateManager.KEY_STATUS)) {
case SystemUpdateManager.STATUS_WAITING_DOWNLOAD:
case SystemUpdateManager.STATUS_IN_PROGRESS: