如何在Android中读取MMS数据?

如何在Android中读取MMS数据?

我想阅读我在mmssms.db存储MMS条目的位置;我使用的是游标,我想知道合适的URI;我使用的是“内容:/mms-SMS/会话”和列名“地址”(发送到)、“文本”或“主题”和“数据”列名的图像。

我已经看到了mmssms.db和他们的部分表列。


炎炎设计
浏览 854回答 3
3回答

富国沪深

获得寄件人地址的方法对我无效。除了可能抛出异常和新字符串(.)之外,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;}我并不关心它是否都是数字,但我加入了一种方法来消除数字以外的所有东西,作为注释(如果需要的话)。它可以很容易地修改,以返回所有收件人,以及。我猜这对他有用。如果异常发生在第一行,它将给出正确的答案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android