TouchWiz上的SMS收件箱问题

时间:2013-07-12 04:59:38

标签: android sms

我正在编写一个Android应用程序,它将显示每个用户联系人发送的消息数量。我已经在我的Nexus S(Android 4.1.2)上测试了应用程序,它正在按预期工作。现在,前几天我在Galaxy S Duos(Android 4.0.1)上测试相同的应用程序,我无法看到联系方式。我使用的代码如下所示。

public static String    SMS_URI_INBOX   = "content://sms/inbox";
Uri parsedUri = Uri.parse(SMS_URI_INBOX);
String[] projection = new String[] { "_id", "address", "person" };
Cursor cursor = contentResolver.query(parsedUri, projection, null, null, null);

if (cursor.getCount() > 0) {
    String person;
    int personIndex = cursor.getColumnIndex("person");
    if (cursor.moveToFirst())
        do {
            // The person will be the foreign key from the Contacts table
            person = cursor.getString(personIndex);

            if (person != null) {
                // Add this person to a list
            }
        } while (cursor.moveToNext());
    }
    cursor.close();

在运行TouchWiz的三星设备上,在person = cursor.getString(personIndex);行,我似乎将person的值设为null。

我尝试打印出光标的所有值(30列),但找不到适合此值的其他列名。我知道消息可以映射到联系人,因为消息应用程序证明了它。

有没有人遇到类似问题以及如何解决?

1 个答案:

答案 0 :(得分:0)

在某些Android手机中,不推荐使用person列。所以你不应该依赖这个专栏。不仅三星所有运行4.1.2及更高版本的索尼设备都会给你空值。