Decoding binary string message
These critiques are mostly style and syntax related, and do not address your algorithm (you could probably find the simplest possible algorithm with Google anyway).


make decode and decodeMessage static
explicitly hide the constructor for BinaryCode, e.g.

// hide constructor
private BinaryCode() {}

remove unneseccary - 0 from encodedDigit and decodedDigit declarations
let decodeMessage calculate messageLength (fewer parameters are nearly always better)
avoid using magic numbers and string literals (-1, -2, "NONE", etc...)
create method lastChar and call it instead of messageLength - 1 e.g. int checkValue = lastChar(decodedMessage) - '0';

private static char lastChar(CharSequence sequence) {
    int lastIndex = sequence.length() - 1;
    return sequence.charAt(lastIndex);
}

replace decodedMessage.charAt(messageLength - 2) and decodedMessage.charAt(i - 1) with previouslyDecodedChar e.g.

char previouslyDecodedChar = '\0';
for (int i = 0; i &lt; messageLength; i++) {
    // ...
    if (i &gt; 0) {
        nextDecodedDigit -= previouslyDecodedChar - '0';
    }
    previouslyDecodedChar = decodedMessage.charAt(i);
}
int checkValue = lastChar(decodedMessage) - '0';
if (messageLength &gt; 1) {
    checkValue += previouslyDecodedChar - '0';
}