/**
   * Constructor.
   *
   * @param context the caller's context
   */
  public SecurePreferencesOld(Context context) {
    // Proxy design pattern
    if (SecurePreferencesOld.sFile == null) {
      SecurePreferencesOld.sFile = PreferenceManager.getDefaultSharedPreferences(context);
    }
    // Initialize encryption/decryption key
    try {
      final String key = SecurePreferencesOld.generateAesKeyName(context);
      String value = SecurePreferencesOld.sFile.getString(key, null);
      if (value == null) {
        value = SecurePreferencesOld.generateAesKeyValue();
        SecurePreferencesOld.sFile.edit().putString(key, value).commit();
      }
      SecurePreferencesOld.sKey = SecurePreferencesOld.decode(value);

    } catch (Exception e) {
      if (sLoggingEnabled) {
        Log.e(TAG, "Error init:" + e.getMessage());
      }
      throw new IllegalStateException(e);
    }
    // initialize OnSecurePreferencesChangeListener HashMap
    sOnSharedPreferenceChangeListeners =
        new HashMap<OnSharedPreferenceChangeListener, OnSharedPreferenceChangeListener>(10);
  }