From f8739eda93c6c65fa031116d2cb79d1db6c56a08 Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Mon, 11 Apr 2022 21:50:01 +0800 Subject: [PATCH] Fix "Factory Reset" fails to reset the device when device didn't support PersistentDataBlockManager, Settings will crash at get PersistentDataBlock service. So we need to check if device support PersistentDataBlockManager before call getService. Fixes: 196634851 Test: manual verify on aosp build. Change-Id: I5afba5df8c4831499478490b442c0fcf367d23ae --- src/com/android/settings/MainClearConfirm.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/android/settings/MainClearConfirm.java b/src/com/android/settings/MainClearConfirm.java index c45a907c632..9208c4fbf6a 100644 --- a/src/com/android/settings/MainClearConfirm.java +++ b/src/com/android/settings/MainClearConfirm.java @@ -31,6 +31,7 @@ import android.content.pm.ActivityInfo; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; +import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.service.oemlock.OemLockManager; @@ -67,6 +68,8 @@ import com.google.android.setupdesign.GlifLayout; public class MainClearConfirm extends InstrumentedFragment { private static final String TAG = "MainClearConfirm"; + private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst"; + @VisibleForTesting View mContentView; private boolean mEraseSdCard; @VisibleForTesting boolean mEraseEsims; @@ -83,6 +86,11 @@ public class MainClearConfirm extends InstrumentedFragment { return; } + // pre-flight check hardware support PersistentDataBlockManager + if (SystemProperties.get(PERSISTENT_DATA_BLOCK_PROP).equals("")) { + return; + } + final PersistentDataBlockManager pdbManager = (PersistentDataBlockManager) getActivity().getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);