What if no.length() is odd? You're missing out one digit. Try the following:
That also ensures your string always has an even number of characters.
The "& 0x000000ff" part is unnecessary - the cast to byte cuts off anything over 0x000000ff anyway. But it doesn't hurt though.
Your second method can be removed, because the first method does the exact same thing - take a HEX string and create a byte. Why use two different methods? And the first one works (after the odd-length-fix) - I know because it's identical to my own HEX-string-to-byte method