Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 07a346fc authored by Yiyi Shen's avatar Yiyi Shen
Browse files

Fix dup preference key on Connected devices page

Use different key (prefix + CacheBluetooothDevice hash) for
each BluetoothDevicePreference to avoid Java crash due to "Two different
ViewHolders have the same change ID".

Test: atest
Fix: 325831741
Flag: EXEMPT safe fix only change preference key string
Change-Id: Ic993f3cab206b794045c2f46e6b4b376bfa3adea
parent 1d838f62
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 */
public class AvailableHearingDeviceUpdater extends AvailableMediaBluetoothDeviceUpdater {

    private static final String PREF_KEY = "connected_hearing_device";
    private static final String PREF_KEY_PREFIX = "connected_hearing_device_";

    public AvailableHearingDeviceUpdater(Context context,
            DevicePreferenceCallback devicePreferenceCallback, int metricsCategory) {
@@ -42,7 +42,7 @@ public class AvailableHearingDeviceUpdater extends AvailableMediaBluetoothDevice
    }

    @Override
    protected String getPreferenceKey() {
        return PREF_KEY;
    protected String getPreferenceKeyPrefix() {
        return PREF_KEY_PREFIX;
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 */
public class SavedHearingDeviceUpdater extends SavedBluetoothDeviceUpdater {

    private static final String PREF_KEY = "saved_hearing_device";
    private static final String PREF_KEY_PREFIX = "saved_hearing_device_";

    public SavedHearingDeviceUpdater(Context context,
            DevicePreferenceCallback devicePreferenceCallback, int metricsCategory) {
@@ -47,7 +47,7 @@ public class SavedHearingDeviceUpdater extends SavedBluetoothDeviceUpdater {
    }

    @Override
    protected String getPreferenceKey() {
        return PREF_KEY;
    protected String getPreferenceKeyPrefix() {
        return PREF_KEY_PREFIX;
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater
    private static final String TAG = "AvailableMediaBluetoothDeviceUpdater";
    private static final boolean DBG = Log.isLoggable(BluetoothDeviceUpdater.TAG, Log.DEBUG);

    private static final String PREF_KEY = "available_media_bt";
    private static final String PREF_KEY_PREFIX = "available_media_bt_";

    private final AudioManager mAudioManager;
    private final LocalBluetoothManager mLocalBtManager;
@@ -141,8 +141,8 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater
    }

    @Override
    protected String getPreferenceKey() {
        return PREF_KEY;
    protected String getPreferenceKeyPrefix() {
        return PREF_KEY_PREFIX;
    }

    @Override
+3 −3
Original line number Diff line number Diff line
@@ -213,9 +213,9 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
    public abstract boolean isFilterMatched(CachedBluetoothDevice cachedBluetoothDevice);

    /**
     * Return a preference key for logging
     * Return a preference key prefix for logging
     */
    protected abstract String getPreferenceKey();
    protected abstract String getPreferenceKeyPrefix();

    /**
     * Update whether to show {@link CachedBluetoothDevice} in the list.
@@ -248,7 +248,7 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
                    new BluetoothDevicePreference(mPrefContext, cachedDevice,
                            true /* showDeviceWithoutNames */,
                            type);
            btPreference.setKey(getPreferenceKey());
            btPreference.setKey(getPreferenceKeyPrefix() + cachedDevice.hashCode());
            btPreference.setOnGearClickListener(mDeviceProfilesListener);
            if (this instanceof Preference.OnPreferenceClickListener) {
                btPreference.setOnPreferenceClickListener(
+3 −3
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ public class ConnectedBluetoothDeviceUpdater extends BluetoothDeviceUpdater {
    private static final String TAG = "ConnBluetoothDeviceUpdater";
    private static final boolean DBG = Log.isLoggable(BluetoothDeviceUpdater.TAG, Log.DEBUG);

    private static final String PREF_KEY = "connected_bt";
    private static final String PREF_KEY_PREFIX = "connected_bt_";

    private final AudioManager mAudioManager;

@@ -126,8 +126,8 @@ public class ConnectedBluetoothDeviceUpdater extends BluetoothDeviceUpdater {
    }

    @Override
    protected String getPreferenceKey() {
        return PREF_KEY;
    protected String getPreferenceKeyPrefix() {
        return PREF_KEY_PREFIX;
    }

    @Override
Loading