From ba49b199de3456ec8ea3d1286c86ee427106e48b Mon Sep 17 00:00:00 2001 From: Ben Lin Date: Fri, 17 May 2019 17:21:00 -0700 Subject: [PATCH] Allow configuration of which package to handle FACTORY_RESET intent. Bug: 132997046 Test: Build Change-Id: I640f79ac35e5646977771f0898767b8d129bf57c --- core/res/res/values/config.xml | 4 ++++ core/res/res/values/symbols.xml | 1 + .../com/android/server/MasterClearReceiver.java | 16 +++++++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index c3bca6f9bead4..db3372d6869ab 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -4162,4 +4162,8 @@ one bar higher than they actually are --> false + + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index ff9e379d4c4dc..9e93af83dd213 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3812,4 +3812,5 @@ + diff --git a/services/core/java/com/android/server/MasterClearReceiver.java b/services/core/java/com/android/server/MasterClearReceiver.java index 06c46b908b7a8..fa1653db35797 100644 --- a/services/core/java/com/android/server/MasterClearReceiver.java +++ b/services/core/java/com/android/server/MasterClearReceiver.java @@ -16,16 +16,15 @@ package com.android.server; -import android.app.PendingIntent; import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.RecoverySystem; +import android.os.UserHandle; import android.os.storage.StorageManager; -import android.provider.Settings; -import android.telephony.euicc.EuiccManager; +import android.text.TextUtils; import android.util.Log; import android.util.Slog; import android.view.WindowManager; @@ -33,8 +32,6 @@ import android.view.WindowManager; import com.android.internal.R; import java.io.IOException; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; public class MasterClearReceiver extends BroadcastReceiver { private static final String TAG = "MasterClear"; @@ -58,6 +55,15 @@ public class MasterClearReceiver extends BroadcastReceiver { + "Intent#EXTRA_FORCE_FACTORY_RESET should be used instead."); } + final String factoryResetPackage = context + .getString(com.android.internal.R.string.config_factoryResetPackage); + if (Intent.ACTION_FACTORY_RESET.equals(intent.getAction()) + && !TextUtils.isEmpty(factoryResetPackage)) { + intent.setPackage(factoryResetPackage).setComponent(null); + context.sendBroadcastAsUser(intent, UserHandle.SYSTEM); + return; + } + final boolean shutdown = intent.getBooleanExtra("shutdown", false); final String reason = intent.getStringExtra(Intent.EXTRA_REASON); mWipeExternalStorage = intent.getBooleanExtra(Intent.EXTRA_WIPE_EXTERNAL_STORAGE, false);