【发布时间】:2019-07-19 15:41:19
【问题描述】:
以下代码适用于部分平板电脑,不适用于搭载 Android 7 (API 25) 和 8 (API 27)、三星和华为的其他平板电脑。 问题是当使用内容解析器在数据库中插入新短信时,它总是返回一个带有 0(“content://sms/sent/0”)的 uri,而不是带有 sms id 的 uri(“content:/ /sms/sent/104”,然后是“content://sms/sent/105”)。
private val resolver = context.contentResolver
fun saveSending(text: String, destAddress: String, threadId: Int = 0): Uri? {
val uri = resolver.insert(Telephony.Sms.Sent.CONTENT_URI, ContentValues().apply {
put(Telephony.Sms.BODY, text)
put(Telephony.Sms.DATE, MainClock.clock.millis())
put(Telephony.Sms.ADDRESS, destAddress)
put(Telephony.Sms.TYPE, Telephony.Sms.MESSAGE_TYPE_OUTBOX)
put(Telephony.Sms.THREAD_ID, threadId)
put(Telephony.Sms.READ, true)
put(Telephony.Sms.SEEN, true)
})
return uri
}
当在 SMS ("resolver.query") 之后查询时,它包含了它的 id 在 Telephony.Sms._ID 列中。
这是一个已知的 Android 错误吗?任何解决方法?
【问题讨论】:
-
您是否启用了权限
-
是的,我可以在所有平板电脑上发送、储存和做我想做的一切。仅在某些平板电脑上,返回的 uri 为 0。SMS 始终发送良好且库存充足。我可以通过查询找到它并通过这种方式获取它的 ID。