android - 内容://sms/address column not always return "sender' s"number

标签 android sms

当我查询“content://sms/”内容提供商并从地址栏中提取信息时;我总是得到消息“来自”或“发送到”的电话号码。如果我收到一条消息,那么地址就是对方电话号码。当我发送消息时,地址就是我要发送到的消息。

如何在不查询相应收件箱/已发送文件夹的情况下区分“content://sms/”文件夹中的邮件是已发送邮件还是已接收邮件?

    Uri uri = Uri.parse("content://sms/");
    String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body" };
    String selection = "thread_id = " + threadId;
    String sortOrder = "date DESC";
    String limit = "LIMIT " + String.valueOf(mItemsOnPage);

    TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    String deviceNumber = tm.getLine1Number();

    Cursor cursor = getContentResolver().query(uri, columns, selection, null,
            sortOrder + " " + limit);

    if (cursor != null) {
        cursor.moveToLast();

        while (!cursor.isBeforeFirst()) {
            long messageId = cursor.getLong(0);
            String address = cursor.getString(2);
            long date = cursor.getLong(4);
            String body = cursor.getString(5);
            long person = cursor.getLong(3);
            cursor.moveToPrevious();
        }
    }
    cursor.close();

最佳答案

您需要在查询中包含type列。它包含一个long,指示您正在处理接收的(type == 1)还是发送的(type == 2)消息。

这样您就会知道如何解释地址栏。

关于android - 内容://sms/address column not always return "sender' s"number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343059/

相关文章:

android - 在 Android 应用程序中使用 Google+ API 登录

android - 崩溃后重启 Android 应用程序

java - 保存文件选择内部路径而不是 SD 卡路径。

android - 当新的短信到达时启动广播接收器

android - 我如何在 Android 中阅读短信?

android - 使用自定义颜色突出显示 Web View 中的搜索文本

java - android studio 应用签名耗时过长

android - 使用 native 短信应用程序发送短信而不启动自身

android - 使用 Google Voice 发送短信

sms - SMS网关如何工作?