diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DeviceProtectedUtils.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DeviceProtectedUtils.java index 6911d0736..02a2071c5 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DeviceProtectedUtils.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/DeviceProtectedUtils.java @@ -21,42 +21,16 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.util.Log; -import org.dslul.openboard.inputmethod.latin.LatinIME; - -import java.util.Map; -import java.util.Set; - public final class DeviceProtectedUtils { static final String TAG = DeviceProtectedUtils.class.getSimpleName(); - @SuppressWarnings("unchecked") public static SharedPreferences getSharedPreferences(final Context context) { - SharedPreferences deviceProtectedPreferences = PreferenceManager.getDefaultSharedPreferences(getDeviceProtectedContext(context)); + Context deviceProtectedContext = getDeviceProtectedContext(context); + SharedPreferences deviceProtectedPreferences = PreferenceManager.getDefaultSharedPreferences(deviceProtectedContext); if (deviceProtectedPreferences.getAll().isEmpty()) { Log.i(TAG, "Device encrypted storage is empty, copying values from credential encrypted storage"); - for (Map.Entry entry : PreferenceManager.getDefaultSharedPreferences(context).getAll().entrySet()) { - SharedPreferences.Editor deviceProtectedPreferencesEditor = deviceProtectedPreferences.edit(); - try { - if (entry.getKey() != null && entry.getValue() != null) { - if (entry.getValue() instanceof Boolean) - deviceProtectedPreferencesEditor.putBoolean(entry.getKey(), (Boolean) entry.getValue()); - if (entry.getValue() instanceof Float) - deviceProtectedPreferencesEditor.putFloat(entry.getKey(), (Float) entry.getValue()); - if (entry.getValue() instanceof Integer) - deviceProtectedPreferencesEditor.putInt(entry.getKey(), (Integer) entry.getValue()); - if (entry.getValue() instanceof Long) - deviceProtectedPreferencesEditor.putLong(entry.getKey(), (Long) entry.getValue()); - if (entry.getValue() instanceof String) - deviceProtectedPreferencesEditor.putString(entry.getKey(), (String) entry.getValue()); - if (entry.getValue() instanceof Set) - deviceProtectedPreferencesEditor.putStringSet(entry.getKey(), (Set) entry.getValue()); - } - } catch (Exception e) { - Log.w(TAG, "Unable to copy preference from credential to device encrypted storage", e); - } - deviceProtectedPreferencesEditor.apply(); - } + deviceProtectedContext.moveSharedPreferencesFrom(context, PreferenceManager.getDefaultSharedPreferencesName(context)); } return deviceProtectedPreferences; }