From 4c7287290b01302ef0360f3391ffccc5da8a81f1 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Thu, 7 Aug 2025 06:57:24 +0530 Subject: [PATCH] Settings: Fix slice data illegal state in credentials Log: 08-07 06:50:38.941 W/SliceDataConverter(9136): Get slice data from XML failed 08-07 06:50:38.941 W/SliceDataConverter(9136): java.lang.IllegalStateException: Invalid preference controller: com.android.settings.applications.credentials.CredentialManagerPreferenceController 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.core.BasePreferenceController.createInstance(BasePreferenceController.java:149) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SliceBuilderUtils.getPreferenceController(SliceBuilderUtils.java:369) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SliceDataConverter.getSliceDataFromXML(SliceDataConverter.java:192) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SliceDataConverter.getSliceDataFromProvider(SliceDataConverter.java:147) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SliceDataConverter.getSliceData(SliceDataConverter.java:117) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SlicesIndexer.getSliceData(SlicesIndexer.java:94) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SlicesIndexer.indexSliceData(SlicesIndexer.java:75) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SlicesFeatureProviderImpl.indexSliceData(SlicesFeatureProviderImpl.java:63) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SlicesDatabaseAccessor.verifyIndexing(SlicesDatabaseAccessor.java:197) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SlicesDatabaseAccessor.getSliceUris(SlicesDatabaseAccessor.java:97) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.slices.SettingsSliceProvider.onGetSliceDescendants(SettingsSliceProvider.java:359) 08-07 06:50:38.941 W/SliceDataConverter(9136): at androidx.slice.compat.SliceProviderWrapperContainer$SliceProviderWrapper.onGetSliceDescendants(SliceProviderWrapperContainer.java:166) 08-07 06:50:38.941 W/SliceDataConverter(9136): at android.app.slice.SliceProvider.handleGetDescendants(SliceProvider.java:421) 08-07 06:50:38.941 W/SliceDataConverter(9136): at android.app.slice.SliceProvider.call(SliceProvider.java:402) 08-07 06:50:38.941 W/SliceDataConverter(9136): at androidx.slice.compat.SliceProviderWrapperContainer$SliceProviderWrapper.call(SliceProviderWrapperContainer.java:123) 08-07 06:50:38.941 W/SliceDataConverter(9136): at android.content.ContentProvider.call(ContentProvider.java:2709) 08-07 06:50:38.941 W/SliceDataConverter(9136): at android.content.ContentProvider$Transport.call(ContentProvider.java:638) 08-07 06:50:38.941 W/SliceDataConverter(9136): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:307) 08-07 06:50:38.941 W/SliceDataConverter(9136): at android.os.Binder.execTransactInternal(Binder.java:1421) 08-07 06:50:38.941 W/SliceDataConverter(9136): at android.os.Binder.execTransact(Binder.java:1365) 08-07 06:50:38.941 W/SliceDataConverter(9136): Caused by: java.lang.reflect.InvocationTargetException 08-07 06:50:38.941 W/SliceDataConverter(9136): at java.lang.reflect.Constructor.newInstance0(Native Method) 08-07 06:50:38.941 W/SliceDataConverter(9136): at java.lang.reflect.Constructor.newInstance(Constructor.java:343) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.core.BasePreferenceController.createInstance(BasePreferenceController.java:146) 08-07 06:50:38.941 W/SliceDataConverter(9136): ... 19 more 08-07 06:50:38.941 W/SliceDataConverter(9136): Caused by: java.lang.RuntimeException: Can't create handler inside thread Thread[binder:9136_1,5,main] that has not called Looper.prepare() 08-07 06:50:38.941 W/SliceDataConverter(9136): at android.os.Handler.(Handler.java:231) 08-07 06:50:38.941 W/SliceDataConverter(9136): at android.os.Handler.(Handler.java:133) 08-07 06:50:38.941 W/SliceDataConverter(9136): at com.android.settings.applications.credentials.CredentialManagerPreferenceController.(CredentialManagerPreferenceController.java:110) 08-07 06:50:38.941 W/SliceDataConverter(9136): ... 22 more Signed-off-by: Pranav Vashi --- .../credentials/CredentialManagerPreferenceController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java index 3b14595bbaf..5bbf1ff3f83 100644 --- a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +++ b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java @@ -38,6 +38,7 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; +import android.os.Looper; import android.os.OutcomeReceiver; import android.os.UserHandle; import android.os.UserManager; @@ -107,7 +108,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl private final Executor mExecutor; private final Map mPrefs = new HashMap<>(); // key is package name private final List mPendingServiceInfos = new ArrayList<>(); - private final Handler mHandler = new Handler(); + private final Handler mHandler = new Handler(Looper.getMainLooper()); private final SettingContentObserver mSettingsContentObserver; private final ImageUtils.IconResizer mIconResizer;