Regular (text) SMS messages are sent via the cellular network control channel. You can read a good description of what exactly is happening here: http://computer.howstuffworks.com/e-mail-messaging/sms.htm
When you use sendDataMessage
, you send your cell data channel. It is separate from voice channels and control channels. This is why nothing is sent when the cell data is disabled.
The encoding depends on the language and on whether it is text or data. See βPost Sizeβ in this article: https://en.wikipedia.org/wiki/Short_Message_Service
SMS is complicated. You might want to take a look at a solution provider such as Twilio, instead of doing it yourself.
source share