如何没有发送消息

发布于 2025-02-11 02:10:56 字数 3098 浏览 1 评论 0原文

我如何无法收到发送消息?

在我从Telephony.sms.content_uri中获取所有消息的地方,这是很好的工作。但是,如果我的消息没有发送(没有很多,没有收音机等),我没有eleathony.sms.content_uri

有趣的时刻:我与Smsmanager一起从应用程序发送消息。但是默认应用程序看不到发送消息。我可以重新审议。

fun getAllSms(context: Context): MutableList<SmsDto> {
    val reqCols = arrayOf(
        Telephony.Sms._ID, Telephony.Sms.ADDRESS, Telephony.Sms.BODY,
        Telephony.Sms.DATE,
        Telephony.Sms.DATE_SENT,
        Telephony.Sms.TYPE,
        Telephony.Sms.THREAD_ID,
        Telephony.Sms.STATUS,
        Telephony.Sms.READ,
        Telephony.Sms.SEEN,
    )
    val cr: ContentResolver = context.contentResolver
    val c: Cursor? = cr.query(Telephony.Sms.CONTENT_URI, reqCols, null, null, null)

    val messages = mutableListOf<SmsDto>()

    c?.let {
        if (c.count > 0) {
            while (c.moveToNext()) {
                messages.add(SmsDto[c])
            }
        }
    }

    c?.close()
    messages.sortByDescending { it.timestampInMillis }
    return messages
}

private fun load(cursor: Cursor) {
    cursor.getColumnIndex(Sms._ID).overMinusOneOrNull()?.let {
        rowId = cursor.getLong(it)
    }
    cursor.getColumnIndex(Sms.ADDRESS).overMinusOneOrNull()?.let {
        phone = cursor.getString(it)
    }
    cursor.getColumnIndex(Sms.BODY).overMinusOneOrNull()?.let {
        body = cursor.getString(it)
    }
    cursor.getColumnIndex(Sms.DATE).overMinusOneOrNull()?.let {
        timestampInMillis = cursor.getLong(it)
    }
    // Before ICS, there is no "date_sent" so use copy of "date" value
    cursor.getColumnIndex(Sms.DATE_SENT).overMinusOneOrNull()?.let {
        timestampSentInMillis = cursor.getLong(it)
    }
    cursor.getColumnIndex(Sms.TYPE).overMinusOneOrNull()?.let {
        type = SmsType.values()[cursor.getInt(it)]
    }
    cursor.getColumnIndex(Sms.THREAD_ID).overMinusOneOrNull()?.let {
        threadId = cursor.getLong(it)
    }
    cursor.getColumnIndex(Sms.STATUS).overMinusOneOrNull()?.let {
        status = SmsStatus.values().find { i ->
            i.rawStatus == cursor.getInt(it)
        } ?: SmsStatus.NONE
    }
    cursor.getColumnIndex(Sms.READ).overMinusOneOrNull()?.let {
        read = cursor.getInt(it) != 0
    }
    cursor.getColumnIndex(Sms.SEEN).overMinusOneOrNull()?.let {
        seen = cursor.getInt(it) != 0
    }
    uri = ContentUris.withAppendedId(Sms.CONTENT_URI, rowId).toString()
}

upd upd2

“

您如何看待第一个图像默认应用程序从数据库中获取了一条消息。但是我从应用程序发送。在第二张图像中,我们可以看到我的应用程序无法从数据库中获取无发送消息。

第三张图像是信息,对于显示:我的应用程序从数据库获取收件箱/输出消息。

默认应用中的红色文本:否发送。触摸PLS发送。

How I can get no sent messages?

Where I get all messages from Telephony.Sms.CONTENT_URI, it is good working. But if my message no sent (no many, no radio, etc), I no got in Telephony.Sms.CONTENT_URI.

Interesting moment: I sending the message from my app, with SmsManager. But default app can see no sent messages. And I can resend it.

UPD

fun getAllSms(context: Context): MutableList<SmsDto> {
    val reqCols = arrayOf(
        Telephony.Sms._ID, Telephony.Sms.ADDRESS, Telephony.Sms.BODY,
        Telephony.Sms.DATE,
        Telephony.Sms.DATE_SENT,
        Telephony.Sms.TYPE,
        Telephony.Sms.THREAD_ID,
        Telephony.Sms.STATUS,
        Telephony.Sms.READ,
        Telephony.Sms.SEEN,
    )
    val cr: ContentResolver = context.contentResolver
    val c: Cursor? = cr.query(Telephony.Sms.CONTENT_URI, reqCols, null, null, null)

    val messages = mutableListOf<SmsDto>()

    c?.let {
        if (c.count > 0) {
            while (c.moveToNext()) {
                messages.add(SmsDto[c])
            }
        }
    }

    c?.close()
    messages.sortByDescending { it.timestampInMillis }
    return messages
}

private fun load(cursor: Cursor) {
    cursor.getColumnIndex(Sms._ID).overMinusOneOrNull()?.let {
        rowId = cursor.getLong(it)
    }
    cursor.getColumnIndex(Sms.ADDRESS).overMinusOneOrNull()?.let {
        phone = cursor.getString(it)
    }
    cursor.getColumnIndex(Sms.BODY).overMinusOneOrNull()?.let {
        body = cursor.getString(it)
    }
    cursor.getColumnIndex(Sms.DATE).overMinusOneOrNull()?.let {
        timestampInMillis = cursor.getLong(it)
    }
    // Before ICS, there is no "date_sent" so use copy of "date" value
    cursor.getColumnIndex(Sms.DATE_SENT).overMinusOneOrNull()?.let {
        timestampSentInMillis = cursor.getLong(it)
    }
    cursor.getColumnIndex(Sms.TYPE).overMinusOneOrNull()?.let {
        type = SmsType.values()[cursor.getInt(it)]
    }
    cursor.getColumnIndex(Sms.THREAD_ID).overMinusOneOrNull()?.let {
        threadId = cursor.getLong(it)
    }
    cursor.getColumnIndex(Sms.STATUS).overMinusOneOrNull()?.let {
        status = SmsStatus.values().find { i ->
            i.rawStatus == cursor.getInt(it)
        } ?: SmsStatus.NONE
    }
    cursor.getColumnIndex(Sms.READ).overMinusOneOrNull()?.let {
        read = cursor.getInt(it) != 0
    }
    cursor.getColumnIndex(Sms.SEEN).overMinusOneOrNull()?.let {
        seen = cursor.getInt(it) != 0
    }
    uri = ContentUris.withAppendedId(Sms.CONTENT_URI, rowId).toString()
}

UPD2

enter image description here
enter image description here
enter image description here

How you can see, on the first image default app got a message from database. But I send it from my app. In the second image, we can see my app can't get from database no sent message.

The third image is information, for the show: my app getting inbox/outbox messages from the database.

Red text in default app: No sent. Touch pls for sending.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文