我使用的是 Android SmsManager 提供的 API sendDataMessage发送 SMS 消息并注意到行为似乎因不同的设备而改变,这是我的观察结果。
我能够成功发送消息
- 在所有设备(Nexus 6p、Nexus6、Nexus5)上,如果蜂窝数据已打开
- 在 Nexus6p 上仅当蜂窝数据关闭时
我的问题:
- 是否发生了任何内部变化?此设备特定/运营商特定或 API 特定?
- 就使用的通信 channel 而言,sendDataMessage 与 sendTextMessage 有何不同?
- 发送到 API 的 byte[] 数据是否需要进行 7 位编码?
最佳答案
常规(文本)SMS 消息通过蜂窝网络控制 channel 发送。您可以在此处详细了解具体情况:http://computer.howstuffworks.com/e-mail-messaging/sms.htm
当您使用 sendDataMessage
时,您是通过手机数据通道发送的。这与语音和控制 channel 是分开的。这就是为什么当手机数据关闭时不会发送任何内容的原因。
编码取决于语言以及它是文本还是数据。请参阅本文中的“消息大小”:https://en.wikipedia.org/wiki/Short_Message_Service
短信很复杂。您可能想看看像 Twilio 这样的解决方案提供商,而不是自己动手。
关于android - Android 中的 SmsManager SendDataMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41292951/