android - Android 中的 SmsManager SendDataMessage

标签 android sms

我使用的是 Android SmsManager 提供的 API sendDataMessage发送 SMS 消息并注意到行为似乎因不同的设备而改变,这是我的观察结果。

我能够成功发送消息

  1. 在所有设备(Nexus 6p、Nexus6、Nexus5)上,如果蜂窝数据已打开
  2. 在 Nexus6p 上仅当蜂窝数据关闭时

我的问题:

  1. 是否发生了任何内部变化?此设备特定/运营商特定或 API 特定?
  2. 就使用的通信 channel 而言,sendDataMessage 与 sendTextMessage 有何不同?
  3. 发送到 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/

相关文章:

ios - 在 iOS 上打开短信列表

Android:从特定电话号码接收短信

sms - 一些 SMS 消息如何传输发件人姓名?

android - OkHttp3 hostnameVerifier 由 : javax.net.ssl.SSLException : Read error: ssl=0xc8cf1fc8: I/O error during system call, 对等方重置连接引起

android - 如何为 Android 从 src 构建二进制文件

java - 使用jsp通过HTTP发送短信

android - 具有两个工作 Activity 的单个按钮

android - 来自 CursorWindow 的错误 : Couldn't read row 0, col -1。在访问数据之前确保 Cursor 被正确初始化

android - 需要 Gradle 版本 1.8。当前版本是 1.9-rc-3 - Android Studio

android拦截最近的应用程序按钮