If you have a String, it's already decoded. Probably using the default decoder, or the one specified in your Reader. I don't think there are any way to detect encodings accurately from just an array of bytes.
In JDK 1.4 there is a detectedCharset() method in java.nio.charset.CharsetDecoder, if/how that work I don't understand.