为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android中读取MMS数据?

如何在Android中读取MMS数据?

炎炎设计 2019-07-09 17:55:23
如何在Android中读取MMS数据?我想阅读我在mmssms.db存储MMS条目的位置;我使用的是游标,我想知道合适的URI;我使用的是“内容:/mms-SMS/会话”和列名“地址”(发送到)、“文本”或“主题”和“数据”列名的图像。我已经看到了mmssms.db和他们的部分表列。
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

获得寄件人地址的方法对我无效。除了可能抛出异常和新字符串(.)之外,Long.parseLong语句不会执行任何操作。

在我的设备上,光标计数是2或更多。第一个典型的“类型”为137,而其他的“类型”为151。我找不到文件记载的地方,但可以推断出137是“from”,151是“to”。因此,如果我按原样运行该方法,则不会得到异常,它将返回最后一行,这是一个收件人,在许多情况下仅是几行中的一个。

另外,由于所有行都具有相同的msg_id,所以选择不是必需的。不过,这并不伤人。

这样我才能得到寄件人的地址:

public static String getMMSAddress(Context context, String id) {
    String addrSelection = "type=137 AND msg_id=" + id;
    String uriStr = MessageFormat.format("content://mms/{0}/addr", id);
    Uri uriAddress = Uri.parse(uriStr);
    String[] columns = { "address" };
    Cursor cursor = context.getContentResolver().query(uriAddress, columns,
            addrSelection, null, null);
    String address = "";
    String val;
    if (cursor.moveToFirst()) {
        do {
            val = cursor.getString(cursor.getColumnIndex("address"));
            if (val != null) {
                address = val;
                // Use the first one found if more than one
                break;
            }
        } while (cursor.moveToNext());
    }
    if (cursor != null) {
        cursor.close();
    }
    // return address.replaceAll("[^0-9]", "");
    return address;}

我并不关心它是否都是数字,但我加入了一种方法来消除数字以外的所有东西,作为注释(如果需要的话)。它可以很容易地修改,以返回所有收件人,以及。

我猜这对他有用。如果异常发生在第一行,它将给出正确的答案。


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 853 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信