Fix unbundled accessibility features settings crash when launched
Root cause: The ag/19938064 introduces Settings Core change preference value changed metrics log format. It tries to lookupMetricsCategory() at Fragment#instantiate() stage. It has not onAttach() to activity by FragmentManager#add() or #replace(). The features were added by ag/15824482. Solution: PutInt new MATRICS_CATEGORY extra in previous class to avoid giving context for FeatureFactory.getFactory to custom 1P accessibility services for SettingsGoogle overlay. Bug: 259355675 Test: manual test Change-Id: Ic37d41be6a54fe388f211c1c397d0b9b87b5fb56
This commit is contained in:
@@ -37,6 +37,7 @@ import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.settingslib.RestrictedPreference;
|
||||
@@ -118,9 +119,12 @@ public class RestrictedPreferenceHelper {
|
||||
final String htmlDescription = info.loadHtmlDescription(mPm);
|
||||
final String settingsClassName = info.getSettingsActivityName();
|
||||
final String tileServiceClassName = info.getTileServiceName();
|
||||
final int metricsCategory = FeatureFactory.getFactory(mContext)
|
||||
.getAccessibilityMetricsFeatureProvider()
|
||||
.getDownloadedFeatureMetricsCategory(componentName);
|
||||
|
||||
putBasicExtras(preference, prefKey, title, intro, description, imageRes,
|
||||
htmlDescription, componentName);
|
||||
htmlDescription, componentName, metricsCategory);
|
||||
putServiceExtras(preference, resolveInfo, serviceEnabled);
|
||||
putSettingsExtras(preference, packageName, settingsClassName);
|
||||
putTileServiceExtras(preference, packageName, tileServiceClassName);
|
||||
@@ -178,9 +182,12 @@ public class RestrictedPreferenceHelper {
|
||||
final String htmlDescription = info.loadHtmlDescription(mPm);
|
||||
final String settingsClassName = info.getSettingsActivityName();
|
||||
final String tileServiceClassName = info.getTileServiceName();
|
||||
final int metricsCategory = FeatureFactory.getFactory(mContext)
|
||||
.getAccessibilityMetricsFeatureProvider()
|
||||
.getDownloadedFeatureMetricsCategory(componentName);
|
||||
|
||||
putBasicExtras(preference, prefKey, title, intro, description, imageRes,
|
||||
htmlDescription, componentName);
|
||||
htmlDescription, componentName, metricsCategory);
|
||||
putSettingsExtras(preference, componentName.getPackageName(), settingsClassName);
|
||||
putTileServiceExtras(preference, componentName.getPackageName(),
|
||||
tileServiceClassName);
|
||||
@@ -265,7 +272,7 @@ public class RestrictedPreferenceHelper {
|
||||
/** Puts the basic extras into {@link RestrictedPreference}'s getExtras(). */
|
||||
private void putBasicExtras(RestrictedPreference preference, String prefKey,
|
||||
CharSequence title, CharSequence intro, CharSequence summary, int imageRes,
|
||||
String htmlDescription, ComponentName componentName) {
|
||||
String htmlDescription, ComponentName componentName, int metricsCategory) {
|
||||
final Bundle extras = preference.getExtras();
|
||||
extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY, prefKey);
|
||||
extras.putCharSequence(AccessibilitySettings.EXTRA_TITLE, title);
|
||||
@@ -274,6 +281,7 @@ public class RestrictedPreferenceHelper {
|
||||
extras.putParcelable(AccessibilitySettings.EXTRA_COMPONENT_NAME, componentName);
|
||||
extras.putInt(AccessibilitySettings.EXTRA_ANIMATED_IMAGE_RES, imageRes);
|
||||
extras.putString(AccessibilitySettings.EXTRA_HTML_DESCRIPTION, htmlDescription);
|
||||
extras.putInt(AccessibilitySettings.EXTRA_METRICS_CATEGORY, metricsCategory);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user