diff --git a/app/core/src/main/java/com/fsck/k9/preferences/Settings.java b/app/core/src/main/java/com/fsck/k9/preferences/Settings.java index 1aa80b3a590..dcff73e46ea 100644 --- a/app/core/src/main/java/com/fsck/k9/preferences/Settings.java +++ b/app/core/src/main/java/com/fsck/k9/preferences/Settings.java @@ -243,6 +243,13 @@ static TreeMap versions(V... versionDescriptions) static class InvalidSettingValueException extends Exception { private static final long serialVersionUID = 1L; + + public InvalidSettingValueException() { + } + + public InvalidSettingValueException(String message) { + super(message); + } } /** diff --git a/app/core/src/main/java/com/fsck/k9/preferences/SettingsImporter.java b/app/core/src/main/java/com/fsck/k9/preferences/SettingsImporter.java index 3d9b2617044..f7308902c61 100644 --- a/app/core/src/main/java/com/fsck/k9/preferences/SettingsImporter.java +++ b/app/core/src/main/java/com/fsck/k9/preferences/SettingsImporter.java @@ -253,8 +253,12 @@ public static ImportResults importSettings(Context context, InputStream inputStr erroneousAccounts.add(importResult.original); } } catch (InvalidSettingValueException e) { - Timber.e(e, "Encountered invalid setting while importing account \"%s\"", - account.name); + String reason = e.getMessage(); + if (TextUtils.isEmpty(reason)) { + reason = "Unknown"; + } + Timber.e(e, "Encountered invalid setting while importing account \"%s\", reason: \"%s\"", + account.name, reason); erroneousAccounts.add(new AccountDescription(account.name, account.uuid)); } catch (Exception e) { @@ -363,7 +367,7 @@ private static AccountDescriptionPair importAccount(Context context, StorageEdit if (account.incoming == null) { // We don't import accounts without incoming server settings - throw new InvalidSettingValueException(); + throw new InvalidSettingValueException("Missing incoming server settings"); } // Write incoming server settings @@ -380,7 +384,7 @@ private static AccountDescriptionPair importAccount(Context context, StorageEdit boolean authorizationNeeded = incoming.authenticationType == AuthType.XOAUTH2; if (account.outgoing == null) { - throw new InvalidSettingValueException(); + throw new InvalidSettingValueException("Missing outgoing server settings"); } String outgoingServerName = null; @@ -448,7 +452,7 @@ private static AccountDescriptionPair importAccount(Context context, StorageEdit importIdentities(editor, contentVersion, uuid, account, overwrite, existingAccount, prefs); } else if (!mergeImportedAccount) { // Require accounts to at least have one identity - throw new InvalidSettingValueException(); + throw new InvalidSettingValueException("Missing identities, there should be at least one."); } // Write folder settings @@ -541,7 +545,7 @@ private static void importIdentities(StorageEditor editor, int contentVersion, S // Validate email address if (!IdentitySettingsDescriptions.isEmailAddressValid(identity.email)) { - throw new InvalidSettingValueException(); + throw new InvalidSettingValueException("Invalid email address: " + identity.email); } // Write email address