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