我在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在这里是什么意思?
答案 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;