Android短信状态的70值代表什么?

时间:2018-12-18 09:19:36

标签: android kotlin sms

我在Kotlin中有一些Android代码正在获取已存储的SMS消息的状态:

val status = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Sms.STATUS))

稍后,我将此值与不同的常量进行比较,以查看状态的含义:

print(when (status) {
    Telephony.Sms.STATUS_COMPLETE -> "complete"
    Telephony.Sms.STATUS_FAILED -> "failed"
    Telephony.Sms.STATUS_NONE -> "none"
    Telephony.Sms.STATUS_PENDING -> "pending"
    else -> status.toString()
})

通常,我会得到“ complete”,“ none”和“ pending”之类的字符串。但是,有时会返回“ 70”,这意味着状态与任何常量found listed here不匹配。 70在这里是什么意思?

2 个答案:

答案 0 :(得分:2)

在深入研究源代码(特别是类SmsMessage,字段status)后,我发现了这个document。滚动到第68页的9.2.3.15部分时,您将看到SMS可能的状态代码列表。您的代码(70)表示

  

1000110 SM有效期已过期

答案 1 :(得分:2)

在某些情况下,当运营商确定不可能路由SMS且消息在平台之间循环时必须丢弃时,会返回此错误代码。

错误代码:70

目的地永久不可用目的地(即“ dst”) 电话号码未激活,也没有指示何时可以再次使用。请注意,这是一个广泛的错误代码,其中运营商没有指出目的地不可用的原因。检查“ dst”电话号码以确保其正确无误。另外,请尝试将消息发送到备用号码,以确保应用程序的所有其他部分都正常工作。

这是其他错误代码。

    /** TP-Status: no status received. */
    public static final int STATUS_NONE = -1;
    /** TP-Status: complete. */
    public static final int STATUS_COMPLETE = 0;
    /** TP-Status: pending. */
    public static final int STATUS_PENDING = 32;
    /** TP-Status: failed. */
    public static final int STATUS_FAILED = 64;